Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的SQL字符串会导致一个";错误消息:分析错误:语法错误;在PHP中?_Php_Mysql_Sql - Fatal编程技术网

为什么我的SQL字符串会导致一个";错误消息:分析错误:语法错误;在PHP中?

为什么我的SQL字符串会导致一个";错误消息:分析错误:语法错误;在PHP中?,php,mysql,sql,Php,Mysql,Sql,这个代码一直出错 错误消息:解析错误:语法错误,意外的T_封装的_和_空格,第19行的/home/soulz/public_html/inbox.php中需要T_字符串或T_变量或T_NUM_字符串 代码如下: mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]' WHERE `message_id`=$row['message_id']"); 不要在字段名周围加撇号: mysql_query("UPDATE `me

这个代码一直出错

错误消息:解析错误:语法错误,意外的T_封装的_和_空格,第19行的/home/soulz/public_html/inbox.php中需要T_字符串或T_变量或T_NUM_字符串

代码如下:

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

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

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

在带引号的字符串中,不能对数组字段名使用附加引号。如果你有一个非常复杂的数组表达式,还有一个替代的更复杂的语法涉及大括号,但这里不需要大括号。

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

mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]'
             WHERE `message_id`=$row[message_id]");
                                     ^^^^^^^^^^
在带引号的字符串中,不能对数组字段名使用附加引号。如果你有一个非常复杂的数组表达式,还有一个更复杂的替代语法涉及大括号,但这里不需要大括号。

使用大括号:

mysql_query("UPDATE `messages` SET message_title = '[NO SUBJECT]' 
             WHERE `message_id`={$row['message_id']}");
使用大括号:

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

似乎message_id
integer
,因此您可以通过最佳实践修复该错误

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

您可以对字符串使用
strval()
。这两个函数在和中都有详细说明。

似乎消息id
整数
,因此您可以使用最佳做法修复该错误

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

您可以对字符串使用
strval()
。这两个函数在和中都有详细说明。

Hehe,“更复杂的语法”到此为止:-+1这很可能有效。但是,如果我们在阅读这样一段简单的代码时遇到困难,它会有多“好”呢<代码>$messageId=(int)$row['message_id']-->在SQL中使用$messageId变量。。。或者使用sprintf()合并SQL和$row['message_id']@我读这本书一点也不麻烦。事实上,我发现它比使用
sprintf()
更具可读性。对不起,你显然已经习惯了这种方式,我毫不怀疑你能很好地使用它。尽管如此,我还是建议大家总是假设不止一种解决方案——特别是当有人还不习惯其中任何一种的时候。我更喜欢清晰的赋值和没有功能的字符串。呵呵,“更复杂的语法”就到此为止:“-”+1这很可能有效。但是,如果我们在阅读这样一段简单的代码时遇到困难,它会有多“好”呢<代码>$messageId=(int)$row['message_id']-->在SQL中使用$messageId变量。。。或者使用sprintf()合并SQL和$row['message_id']@我读这本书一点也不麻烦。事实上,我发现它比使用
sprintf()
更具可读性。对不起,你显然已经习惯了这种方式,我毫不怀疑你能很好地使用它。尽管如此,我还是建议大家总是假设不止一种解决方案——特别是当有人还不习惯其中任何一种的时候。我更喜欢没有功能的清晰赋值和字符串;他们不建议你写,但在引用的字符串里面写就行了。嗯……别无选择:在字符串外部你必须写
$foo[“bar”]
$foo['bar']
,在字符串内部你不能写(大括号内除外)。这让我觉得有点奇怪;他们不建议你写,但在引用的字符串里面写就行了。嗯……别无选择:外部字符串必须写入
$foo[“bar”]
$foo['bar']
,内部字符串不得写入(大括号内除外)。