-2

我正在尝试在 PHP 脚本中使用 MySql 更新语句来更新列中的数据。MySql 数据库中的表称为 users,相关的列是 sms 和 username。

mysql_query
("UPDATE users set sms = $_SESSION[sms]+ 50 WHERE username = $_SESSION[username]")
;
echo mysql_error();

运行脚本后我得到的错误是:

Unknown column 'maihannijat' in 'where clause'

原因是用户名也是列名旁边的变量。该变量表示活动会话的用户名。

我想在 WHERE 子句之后转义用户名变量,以便在 WHERE 字之后传递准确的 [用户名] 文本类型。

4

2 回答 2

2

这将解决您的问题,但是...

mysql_query
("UPDATE users set sms = ".$_SESSION['sms']." + 50 WHERE username = ".$_SESSION['username'])
;

...您的查询中有 3 个主要错误:您只能在"like中编写简单的变量"SELECT $x FROM $y"。其次,您需要设置'"寻址关联数组键,例如$_SESSION["myvar"]. 第三,您正在使用mysql,现在已经过时了几年。改用mysqli

更新:我不确定您的查询是做什么的,但这可能是另一种选择:

mysql_query
("UPDATE users set sms = ".($_SESSION['sms'] + 50)." WHERE username = ".$_SESSION['username'])
;
于 2013-07-07T19:07:59.687 回答
-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());
于 2013-07-07T19:07:41.827 回答