我正在尝试在我的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);
我确信这很简单,但我完全不知所措。即使我只使用普通字符串替换变量,它也不起作用。
提前感谢您的帮助。
答案 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。