0

以下の私のコード

    $count++;
    $yesstring = 'MATCH';

    echo $count . '. RESULT ' . $idcheck . ': ' . $phonecheck . ' was matched. <br />';

    $matchquery = sprintf("UPDATE `list` SET match = `%s` WHERE homephone = `%s` LIMIT 1",
        mysql_real_escape_string($yesstring),
        mysql_real_escape_string($phonecheck));

    $matchresult = mysql_query($matchquery);

    if (!$matchresult) {
        die("Invalid query: " . mysql_error());
    }

これは私のエラーです

無効なクエリ: SQL 構文にエラーがあります。MATCH1 行目の「match = WHERE homephone = (999) 999-9999LIMIT 1」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

任意の助けをいただければ幸いです

4

2 に答える 2

2

matchはMySQLの予約語です。バックティックでエスケープします。

 UPDATE `list` SET `match` = ...
于 2012-10-15T20:23:53.090 に答える
1

通常の引用符を使用する必要があるときにバッククォートを使用しています。バッククォートは、テーブルまたは列の名前をエスケープするために予約されています。

INSERT INTO `foo` VALUES ('value')

SQL を適切にエスケープしているにもかかわらず、呼び出しmysql_real_escape_stringが常に面倒であることが判明する可能性があります。または PDO に切り替えるとmysqli、長期的には正しい SQL の記述がはるかに簡単になります。

于 2012-10-15T20:24:19.170 に答える