ich eine solche Abfrage ausgeführt werden soll:PDO Update-Abfrage mit Klammern
UPDATE users SET online_time = (online_time + 50) WHERE ID = 1
ich ein Problem habe, weil online_time nicht aktualisiert, wird es von 0. In Mysqli alles war in Ordnung ersetzt. Dies ist mein Code für Update-Funktion in Datenbank-Klasse (es aus dem Internet ist nicht meine Arbeit):
public function update($table, $data, $where)
{
ksort($data);
$fieldDetails = null;
foreach($data as $key => $value){
$fieldDetails .= "$key=:$key, ";
}
$fieldDetails = rtrim($fieldDetails, ', ');
$sth = $this->prepare("UPDATE $table SET $fieldDetails WHERE $where");
foreach ($data as $key => $value){
$sth->bindValue(":$key", $value);
}
$sth->execute();
}
und Code i zu laufen versuchen:
$set = ['online_time' => "(online_time + $t)"];
$where = 'ID = '. $id;
$this->db->update('users', $set, $where);
mit Es ist wahrscheinlich etwas falsch Update-Funktion, aber ich weiß nicht, was:/
erhalte Sie Fehler laufen? – hassan
Sie werden jedoch auf ein Problem stoßen, weil in Ihrer foreach-Schleife: "$ key =: $ key", also nach dem Hinzufügen Ihrer '$ set' -Variable, etwa so ist:' online_time = :(online_time + $ t) ' – hassan
' $ sth = $ this-> vorbereiten ("UPDATE $ table SET $ fieldDetails WHERE $ wo"); 'das sieht gefährlich aus –