php - MySQL 只更新一半的查询

标签 php mysql sql-update

我正在尝试使用 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/

相关文章:

mysql多表查询

sql - 如何使用生成多行的 select 语句更新表?

mysql - 如何在 UPDATE 语句中使用 JOIN?

php - 在 Phinx 中编写数据迁移时如何转义字符串?

php - 使用 PHP 从类似于 SQL LIKE '%search%' 的数组中过滤值

php - 用php调用python脚本(windows xampp服务器)

php - 如何根据用户在 PHP/HTML 表单中的输入在 MySQL Select 子句中包含特定的列元素?

php - 如何在php中获取上个月的第一个日期和最后一个日期?

php - Laravel 与 Webix 数据表编辑的集成

javascript - 在我的 WHERE 上使用 IN chop 不正确的 DOUBLE 值