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 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“match = MATCHWHERE homephone = (999) 999-9999LIMIT 1”附近使用正确的语法

任何帮助,将不胜感激

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可能会被证明是一种持续的麻烦。从长远来看,切换到mysqliPDO 会使编写正确的 SQL 变得容易得多。

于 2012-10-15T20:24:19.170 回答