好的,所以我可能会遗漏一些东西,但我在php中构建一个查询.
$query=("UPDATE values SET max=max+$value, right=right+$value WHERE
id IN ($placement_id)";
$pdo->$query($query);
Run Code Online (Sandbox Code Playgroud)
现在,当我检查数据库时会发生奇怪的事情.具有匹配ID的所有行都会更新最大列,但右列不会更新.我确保它们都是数据库中的int类型.
我错过了什么吗?
你正在使用两个保留字,right和values
用反引号包装这些单词,或为表格和列选择不同的单词.
$query=("UPDATE `values` SET max=max+$value, `right`=`right`+$value WHERE
id IN ($placement_id)";
Run Code Online (Sandbox Code Playgroud)
但是,max也可以在你身上耍花招,所以也可以用反引号来包装.这是一个聚合函数.
$query=("UPDATE `values` SET `max`=`max`+$value, `right`=`right`+$value WHERE
id IN ($placement_id)";
Run Code Online (Sandbox Code Playgroud)
有错误报告,会发出错误信号:
error_reporting(E_ALL);
ini_set('display_errors', 1);
Run Code Online (Sandbox Code Playgroud)
因为看起来你正在使用PDO(并标记为这样):$pdo->$query($query);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);在连接打开后立即添加.
旁注:您现在的代码对 SQL注入开放.使用准备好的语句,或与准备语句PDO.后者是你似乎用作MySQL API库的东西.
引用spencer7593评论:
"此外,设置
PDO::ERRMODE_EXCEPTION连接,将导致PDO抛出的错误.(这是不是最合适的做法,我不是在所有情况下,建议这一点.但是,如果我们不打算理会编写代码来进行检查,为了查看一个语句是否成功,我们不会忽视MySQL错误,默认情况为PDO::ERRMODE_SILENT".
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |