Использование подготовленного отчета PDO и увеличение значения столбца

Я прочитал этот поток: Проблемы увеличивают поле в MySQL / PHP с помощью подготовленных операторов, но не видели ответа на мою проблему.

PDOStatement Object ( [queryString] => UPDATE user_alerts SET notif = ? + 2 WHERE ( user_id = ? ) ) $stmt->execute( array( 'notif', '1' ) ); 

Насколько я могу судить, все это правильно.

Когда выполняется вышеуказанный код, он устанавливает столбец notif равным 2 независимо от значения столбца notif. Это как если бы SQL читал как SET notif = 2 вместо SET notif = notif + 2

Я не смог понять это и очень ценю помощь!

Solutions Collecting From Web of "Использование подготовленного отчета PDO и увеличение значения столбца"

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

Вы не можете привязать имя столбца к подготовленному оператору.

Использование параметров – это не просто замена текста. Вы не можете заменить имя столбца параметром. MySQL будет интерпретировать ваш запрос так, как если бы вы написали это:

 UPDATE user_alerts SET notif = 'notif' + 2 WHERE ( user_id = ? ) 

Строка 'notif' преобразуется в ноль для добавления.

Вместо этого попробуйте этот запрос:

 UPDATE user_alerts SET notif = notif + 2 WHERE ( user_id = ? )