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

at firebugsは、プロセスページへの接続が正常であることを示しています...しかし、応答ではエラーが表示されます..私の障害はどこにありますか?

4

4 に答える 4

1

それはPHPだと思います。

上記の行の後にコマンドを追加しecho $sql;ます。クエリの形式が正しくない、つまりFROM句の終わりと。の間にスペースがないに違いありませんWHERE。と同じORDER BYです。常に起こります;)

于 2010-06-29T02:19:54.813 に答える
1

ジェイソンが言ったことは良いことであり、改行のスペースが不足しているように見えるエラーがどこにあるかを示します。前にスペースを追加し、前WHEREに別のスペースを追加しますORDER

于 2010-06-29T02:23:56.113 に答える
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 に答える
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はヒアドキュメント内の改行を尊重し、MySQLはそれらをスペースとして黙って扱い、クエリの整合性を維持します。

于 2010-06-29T03:18:22.517 に答える