0
我正在處理數據表,並且我正在嘗試創建一個自定義的WHERE子句。我有以下代碼:創建一個自定義的WHERE子句來過濾數據表
$sWhere = "WHERE office=".$varOffice;
if (isset($_GET['sSearch']) && $_GET['sSearch'] != "")
{
$sWhere = "WHERE (";
for ($i=0 ; $i<count($aColumns) ; $i++)
{
if (isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true")
{
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch'])."%' OR ";
}
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ') AND office='.$varOffice;
}
調試後,我發現MySQL正在拋出一個錯誤。錯誤1605
我決定呼應$sQuery
這裏找到:
$sQuery = "
SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
FROM $sTable
$sWhere
$sOrder
$sLimit
";
然後我發現了錯誤,是因爲在WHERE子句中沒有報價,如:
SELECT SQL_CALC_FOUND_ROWS `amount_due_owed`, `amount_paid`, `amount_remaining`, `reference_number` FROM accounting WHERE office=Office 1
它應該是:
WHERE office='Office 1'
我一直在努力,我一直都沒有弄明白。我該如何得到變量的單引號?
這是一種方式,但如果使用<<< QEND ... QEND存在很多此類「事件」聲明,可能會變得非常混亂;可以非常方便,因爲它們允許內容中的'和' –
非常真實......但真正的答案是準備好語句:) – glomad
準備好的語句在可能的情況下始終是最好的。有時,當您需要有條件地或特別地構建語句時迭代你不能輕易使用它們,因爲你不知道有多少個參數。 –