UPDATE sql字符串错误


UPDATE sql String Error

已经学习php 3周了,我发现自己遇到了一个没有意义的简单错误:

我看不出这个代码出了什么问题。

有人能告诉我为什么会发生这种事吗。

这是一个简单的插入并设置sql查询,如下所示:

代码:

$insertresults = "UPDATE usage SET message='".$message."',islive='".$islive."' WHERE id=1"; 
$insertresults_doit = mysql_query($insertresults) OR die(mysql_error());  

我得到的错误是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'usage SET message='hello',islive='0' WHERE id=1' at line 1

正如您所看到的,变量是正确的,我所看到的sql字符串也是正确的。

感谢

您的表名usage实际上是MySQL中的一个保留字。你必须在报价中加上反勾号:

UPDATE `usage` SET ...
$insertresults = "UPDATE usage SET message=$message,islive=$islive WHERE id=1"; 
$insertresults_doit = mysql_query($insertresults) OR die(mysql_error());  

你不需要像以前那样包装变量,试试看:)看看这个错误,就会发现列名周围有额外的'——你不希望这样。

尝试从$islive 中删除引号

检查变量值中是否有一个引号。在sql语句中使用之前最好先对其进行转义

$message=addslashes($message);
$islive=addslashes($islive);
$insertresults = "UPDATE usage SET message='".$message."',islive='".$islive."' WHERE id=1"; 
$insertresults_doit = mysql_query($insertresults) OR die(mysql_error()); 

假设这两列都是varchar类型

"更新用法SET message='{$message}',islive='{$islive}'WHERE id=1"–Nick 21分钟前

@尼克,如果我使用大括号,我仍然会得到完全相同的错误,即使我不使用"on int",消息也是一条消息,islive是0或1Robert 6分钟前

@罗伯特,你确定$message和$islive已经被正确地逃脱了吗?使用:addslashes()或mysql_real_eescape_string()

移动到应答(增长)