为什么我的SQL字符串在PHP中导致“错误消息:解析错误:语法错误”?

时间:2011-09-05 15:08:53

标签: php mysql sql

此代码一直存在错误。

  

错误消息:解析错误:语法错误,意外T_ENCAPSED_AND_WHITESPACE,在第19行的/home/soulz/public_html/inbox.php中期待T_STRING或T_VARIABLE或T_NUM_STRING

以下是代码:

mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]' WHERE `message_id`=$row['message_id']");

3 个答案:

答案 0 :(得分:3)

使用花括号:

mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]' 
             WHERE `message_id`={$row['message_id']}");

答案 1 :(得分:2)

不要在字段名称周围加上撇号:

mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]'
             WHERE `message_id`=$row[message_id]");
                                     ^^^^^^^^^^

在引用的字符串中,您不能对数组字段名称使用其他引号。如果你有一个非常复杂的数组表达式,那么有一个替代的,更精细的语法涉及大括号,但你不需要这里。

答案 2 :(得分:0)

message_id 似乎是integer,因此您可以通过最佳做法修复该错误。

mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]'
             WHERE `message_id`=" . intval($row['message_id']));

您可以将strval()用于字符串。这两项功能都在intval() manual pagestrval() manual page详细说明。