Verwenden von PDO Prepared Statement und Inkrementieren eines Spaltenwerts

Lesezeit: 1 Minute

Verwenden von PDO Prepared Statement und Inkrementieren eines Spaltenwerts
phpmeh

Ich habe diesen Thread gelesen: Probleme beim Erhöhen eines Felds in MySQL/PHP mit vorbereiteten Anweisungen, aber ich habe keine Antwort auf mein Problem gesehen.

PDOStatement Object
(

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

)

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

Soweit ich das beurteilen kann, ist das alles richtig.

Wenn der obige Code ausgeführt wird, setzt er die Notif-Spalte auf 2, unabhängig vom Wert der Notif-Spalte. Es ist, als ob das SQL lesen würde SET notif = 2 anstatt SET notif = notif + 2

Ich komme nicht weiter und würde mich sehr über Hilfe freuen!

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

Sie können einen Spaltennamen nicht an eine vorbereitete Anweisung binden.

Die Verwendung von Parametern ist nicht nur eine einfache Textersetzung. Sie können einen Spaltennamen nicht durch einen Parameter ersetzen. MySQL interpretiert Ihre Abfrage so, als ob Sie Folgendes geschrieben hätten:

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

Die Saite 'notif' wird für die Addition zu Null umgewandelt.

Versuchen Sie stattdessen diese Abfrage:

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

1005350cookie-checkVerwenden von PDO Prepared Statement und Inkrementieren eines Spaltenwerts

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy