Mysql
 sql >> Database >  >> RDS >> Mysql

PDO Dichiarazione preparata All'interno di una classe

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.