0

我正在尝试在我的 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);

我敢肯定这很简单,但我完全感到困惑。即使我只用普通字符串替换变量,它也不起作用。

预先感谢您的任何帮助。

4

2 回答 2

8

对表名和列名使用反引号而不是单引号。尝试以下操作:

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

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

于 2013-07-31T22:33:45.343 回答
3

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

您可以使用:

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

或者:

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

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

于 2013-07-31T22:37:54.593 回答