0

这是我的代码:

    $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);

在萤火虫显示与进程页面的连接正常......但在响应显示错误......我的错在哪里?

4

4 回答 4

1

Jason 说的很好,会告诉你错误在哪里,这看起来像是换行符中缺少空格。在前面加一个空格,在前面加一个WHERE空格ORDER

于 2010-06-29T02:23:56.113 回答
1

我假设那是PHP。

在上面的行之后添加命令echo $sql;。我敢打赌,您的查询格式不正确,即FROM子句末尾和WHERE. 与 相同ORDER BY。一直在发生;)

于 2010-06-29T02:19:54.813 回答
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除非您需要将函数调用结果或常量连接到字符串中:

$sql = <<<EOL
SELECT ... inspection report
WHERE NIK=...
EOL;

PHP 将尊重 heredoc 中的换行符,而 MySQL 会默默地将它们视为空格,从而保持查询的完整性。

于 2010-06-29T03:18:22.517 回答
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";

此方法还将解决您在行之间缺少空格的问题。

于 2010-06-29T02:52:00.773 回答