这是我的代码:
$Line = mysql_real_escape_string(postVar("showline"));
$Model = mysql_real_escape_string(postVar("showmodel"));
$NIK = mysql_real_escape_string(postVar("showNIK"));
$sql ="SELECT NIK,Line,Model FROM inspection_report";
$sql.="WHERE NIK='".$NIK."' AND Model LIKE '%".$Model."%' AND Line='".$Line."'";
$sql.="ORDER BY Inspection_datetime DESC LIMIT 0 , 30";
$dbc=mysql_connect(_SRV, _ACCID, _PWD) or die(_ERROR15.": ".mysql_error());
mysql_select_db("qdbase") or die(_ERROR17.": ".mysql_error());
$res=mysql_query($sql) or _doError(_ERROR30 . ' (<small>' . htmlspecialchars($sql) . '</small>): ' . mysql_error() ); // submit SQL to MySQL and error trap.
$num=mysql_affected_rows();
$objJSON=new mysql2json();
print(trim($objJSON->getJSON($res,$num,'aaData',false)));
mysql_free_result($res);
在firebugs显示连接到进程页面确定...但在响应显示错误.. 我的错在哪里?
答案 0 :(得分:1)
我假设那是PHP。
在上面的行之后添加命令echo $sql;
。我打赌您的查询格式不正确,即FROM
子句的末尾与WHERE
之间没有空格。与ORDER BY
相同。一直发生;)
答案 1 :(得分:1)
Jason说的很好,会告诉你错误的位置,看起来像换行符中缺少空格。在WHERE
之前添加空格,在ORDER
答案 2 :(得分:0)
通过在一组引号中声明SQL字符串,我发现编写和读取我的SQL语句更容易:
$sql ="SELECT NIK,Line,Model FROM inspection_report
WHERE NIK='$NIK' AND Model LIKE '%$Model%' AND Line='$Line'
ORDER BY Inspection_datetime DESC LIMIT 0 , 30";
此方法还可以解决线条之间缺少空格的问题。
答案 3 :(得分:0)
如其他答案中所述,您的查询中缺少空格:
$sql = "SELECT .... inspection_report";
$sql .= "WHERE NIK=..."
etc...
将生成一个查询字符串:
SELECT ... inspection_reportWHERE NIK=...
^^--- problem is here
请注意WHERE子句之前缺少空格。您必须修改字符串连接语句以显式包含空格:
$sql = "SELECT ... inspection_report";
$sql .= " WHERE NIK=..."
^---notice the space here
或使用替代语法来构建字符串。对于多行字符串赋值,通常总是优先使用HEREDOC s,,除非需要将函数调用结果或常量连接到字符串中:
$sql = <<<EOL
SELECT ... inspection report
WHERE NIK=...
EOL;
PHP将尊重heredoc中的换行符,MySQL会默默地将它们视为空格,从而保持查询的完整性。