MySQL更新语法

时间:2013-07-31 22:32:56

标签: php mysql mysqli

我正在尝试在我的PHP脚本中编写一个MySQL,它将更新数据库中的一个字段但是我收到错误:

Fatal error: Wrong SQL: 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 ''user' SET 'currentsong' = '' WHERE 'userid' = '1893'' 

使用此代码时。

$setcurrentsongsql = "UPDATE 'user' SET 'currentsong' = '$currentsong' WHERE 'userid' = '$sql1'";
$setcurrentsong = $db->query($setcurrentsongsql);

我确信这很简单,但我完全不知所措。即使我只使用普通字符串替换变量,它也不起作用。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

对表名和列名使用返回刻度而不是单引号。请尝试以下方法:

$setcurrentsongsql = "UPDATE `user` SET `currentsong` = '$currentsong' WHERE `userid` = '$sql1'";

在MySQL中,标识符引号字符是反引号“`”。这个简短的页面可以让您更好地理解架构规则,标识符等:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

答案 1 :(得分:3)

mySQL对列名和表名使用反引号`,对字符串常量使用撇号'。但是,除非您使用reserved keyword(例如您的表实际上是称为“表”),否则不需要这些,或者您的表或列名称包含空格(例如“my table”) “)。

您可以使用:

$setcurrentsongsql = "UPDATE `user` SET `currentsong` = '$currentsong' WHERE `userid` = '$sql1'";

或者:

$setcurrentsongsql = "UPDATE user SET currentsong = '$currentsong' WHERE userid = '$sql1'";

此外,如果$currentsong来自不受信任的来源,您可能需要担心SQL injection