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

Hvordan kan jeg videregive en række PDO-parametre, men alligevel angive deres typer?

Hvis du deaktiverer standardindstillingen for PDO::ATTR_EMULATE_PREPARES , så vil det virke. Jeg har lige fundet ud af, at den indstilling er slået til som standard for mysql, hvilket betyder, at du faktisk aldrig bruger forberedte sætninger, php opretter internt dynamisk sql for dig, citerer værdierne for dig og erstatter pladsholderne. Ja, en stor wtf.

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

Forberedelserne emuleres som standard på grund af ydeevneårsager.

Se også PDO MySQL:Brug PDO::ATTR_EMULATE_PREPARES eller ej?



  1. ASIN() Eksempler i SQL Server

  2. Returner en liste over databaser i SQLite

  3. Få returværdi fra lagret procedure i C#

  4. Advarsel:PDO::__construct():[2002] Ingen sådan fil eller mappe (forsøger at oprette forbindelse via unix:///tmp/mysql.sock) i