Non stai usando la funzione di binding di PDO nel modo giusto. Dovresti fare qualcosa del genere:
public function update($table, $key, $value, $id) {
$stmt = $this->conn->prepare(
"UPDATE $table SET $key = :value WHERE id = :id"
);
return $stmt->execute(array(
':value' => $value,
':id' => $id
));
}
Innanzitutto, è necessario inserire l'intera stringa da vincolare nella chiave dell'array di associazione. Quindi metti ':id'
anziché 'id'
. Inoltre stavi inserendo le variabili direttamente nella query nel caso di $table
e $value
, ma poi tentare di legarli tra loro, il che non ha senso.
Modifica:i nomi di tabelle e colonne non possono essere associati tramite PDO.