我有這樣的腳本:在phpmysql級聯混淆
$sLimit = "";
if (isset($_POST['iDisplayStart']) && $_POST['iDisplayLength'] != '-1')
{
$sLimit = "LIMIT ".mysql_real_escape_string($_POST['iDisplayStart']).", ".
mysql_real_escape_string($_POST['iDisplayLength']);
}
if (isset($_POST['iSortCol_0']))
{
$sOrder = "ORDER BY ";
for ($i=0 ; $i<intval($_POST['iSortingCols']) ; $i++)
{
if ($_POST[ 'bSortable_'.intval($_POST['iSortCol_'.$i]) ] == "true")
{
$sOrder .= $aColumns[ intval($_POST['iSortCol_'.$i]) ]."
".mysql_real_escape_string($_POST['sSortDir_'.$i]) .", ";
}
}
$sOrder = substr_replace($sOrder, "", -2);
if ($sOrder == "ORDER BY")
{
$sOrder = "";
}
}
$sGroupBy = " GROUP BY A.Range_sampling, A.Lot_no ";
$sQuery = "SELECT SQL_CALC_FOUND_ROWS DATE(A.Inspection_datetime) AS Date, A.Line, A.Model,
A.Lot_no,A.Range_sampling,COUNT(A.Serial_number) AS Error,B.name AS PIC
FROM inspection_report A
LEFT JOIN Employee B
ON A.NIK=B.NIK
WHERE CHAR_LENGTH(A.Range_sampling) < 17
AND MONTH(A.Inspection_datetime)=MONTH(CURRENT_DATE)" .$sGroupBy.$sOrder.$sLimit; //error
$rResult = mysql_query($sQuery) or _doError(_ERROR30 . ' (<small>' . htmlspecialchars($sql) . '</small>): ' . mysql_error());
這個腳本我有錯誤:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0, 10' at line 7
後添加空格顯示:
Error message is :: "Error occuered during query execution: (<small></small>): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc LIMIT 0, 10' at line 8";
完整的查詢:
SELECT SQL_CALC_FOUND_ROWS DATE(A.Inspection_datetime) AS Date, A.Line, A.Model, A.Lot_no,A.Range_sampling,COUNT(A.Serial_number) AS Error,B.name AS PIC FROM inspection_report A LEFT JOIN Employee B ON A.NIK=B.NIK WHERE CHAR_LENGTH(A.Range_sampling) < 17 AND MONTH(A.Inspection_datetime)=MONTH(CURRENT_DATE) GROUP BY A.Range_sampling, A.Lot_no ORDER BY desc LIMIT 0, 10
給我們**純文本SQL字段名* *根本沒有任何php變量。 – zerkms 2011-05-24 04:07:52
你能迴應完整的查詢變成什麼嗎? – judda 2011-05-24 04:08:58
我想說你在LIMIT後缺少一個空格。我發現錯誤通常在錯誤消息中給出的字符串之前。編輯 - oops – dgig 2011-05-24 04:13:42