Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich ein Array von PDO-Parametern übergeben und dennoch ihre Typen angeben?

Wenn Sie die Standardeinstellung von PDO::ATTR_EMULATE_PREPARES deaktivieren , dann klappt es. Ich habe gerade herausgefunden, dass diese Einstellung für mysql standardmäßig aktiviert ist, was bedeutet, dass Sie niemals vorbereitete Anweisungen verwenden, PHP erstellt intern dynamisches SQL für Sie, zitiert die Werte für Sie und ersetzt die Platzhalter. Ja, ein großes Wtf.

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $pdo->prepare($sql);
$stmt->execute(array(5)); //works!

Die Prepares werden aus Performance-Gründen standardmäßig emuliert.

Siehe auch PDO MySQL:PDO::ATTR_EMULATE_PREPARES verwenden oder nicht?