我正在尝试在PHP脚本中使用MySql update语句来更新列中的数据。 MySql数据库中的表称为用户,相关列是短信和用户名。
mysql_query
("UPDATE users set sms = $_SESSION[sms]+ 50 WHERE username = $_SESSION[username]")
;
echo mysql_error();
运行脚本后我得到的错误是:
Unknown column 'maihannijat' in 'where clause'
原因是用户名也是列名旁边的变量。变量表示活动会话的用户名。
我希望在WHERE子句之后转义用户名变量,以便在WHERE字之后传递确切的[用户名]文本类型。
答案 0 :(得分:2)
这将解决您的问题,但是......
mysql_query
("UPDATE users set sms = ".$_SESSION['sms']." + 50 WHERE username = ".$_SESSION['username'])
;
...您的查询中有3个主要错误:您只能在"
中编写简单变量,例如"SELECT $x FROM $y"
。其次,您需要将'
或"
设置为地址关联数组键,例如$_SESSION["myvar"]
。第三,你正在使用mysql
,这已经过了几年了。请改用mysqli
!
更新:我不确定您的查询是做什么的,但这可能是另一种选择:
mysql_query
("UPDATE users set sms = ".($_SESSION['sms'] + 50)." WHERE username = ".$_SESSION['username'])
;
答案 1 :(得分:-1)
为了避免您的mysql
语句混淆(试图将您的表名解释为其查询的一部分),带有mysql保留名称的行或表应该用反引号(`)括起来以避免冲突。
例如:你有一个名为 table 的表名(你不应该首先使用它)但是,如果你真的想用这个名字作为你的表名:
mysql_query("SELECT * FROM `table`")
最好在mysql语句之外进行计算。通过做: 在你的情况下,它应该更像是:
$final = $_SESSION[sms]+50
然后在您的查询中使用$final
"UPDATE users set sms = '$final' WHERE username = `$_SESSION[username]` "
最后一件事:您不应该使用mysql_
功能。学习并使用mysqli_
/ PDO
修改强>
$final = $_SESSION[sms]+ 50;
mysql_query("UPDATE users set sms = '$final'
WHERE username = ".$_SESSION['username']." ")or die(mysql_error());