我读过这篇文章:Issues incrementing a field in MySQL/PHP with prepared statements但没有找到我的问题的答案。

PDOStatement Object
(

    [queryString] => UPDATE user_alerts SET notif = ? + 2 WHERE ( user_id = ? )

)

$stmt->execute( array( 'notif', '1' ) );

据我所知,这一切都是正确的。
执行上述代码时,它将notif列设置为与notif列的值无关的2。就好像sql的读取结果是SET notif = 2而不是SET notif = notif + 2
我还没搞清楚,真的很感谢你的帮助!

最佳答案

$sql = 'UPDATE user_alerts SET notif = notif + 2 WHERE ( user_id = :userid )';
$prepStatement = $pdo->prepare( $sql );
$prepStatement->execute(array(':userid' => $userid));

不能将列名绑定到准备好的语句。

10-06 16:08