我正在尝试使用 MySQL UPDATE 查询来更新数据库中的两项。但是,它似乎只更新了查询中所要求内容的一半。
我使用的代码如下:
$db->query("UPDATE User_files SET Uploads=" . $rows['Uploads']-=1 . ", Files='" . $newfilesescaped . "' WHERE user=" . $escapeduser . "");
它更新了一半的查询,即将“上传”设置为正确的数字。但是,文件列与以前完全相同。
我都回显了 $newfilesescaped 和 var_dumped 它,两者都返回了我想要更新的产品。
最佳答案
您的sql语句错误:-=
运算符的precedence较低比 .
运算符更重要。
您应该在 sql 语句之外进行数学计算或使用类似以下内容的内容:
"UPDATE User_files SET Uploads=" . --$rows['Uploads'] . ", Files='" . $newfilesescaped . "' WHERE user=" . $escapeduser
现在,在应用该操作之前,您将在 -=
两侧连接字符串,并且您的 sql 语句将不是您期望的那样。
参见此处an example of both sql strings以及生成的 sql 语句之间的差异。请注意,您现在拥有的内容将更新表格中所有行的Uploads
列。
关于php - MySQL 只更新一半的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762954/