sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag skicka en rad PDO-parametrar men ändå ange deras typer?

Om du stänger av standardinställningen för PDO::ATTR_EMULATE_PREPARES , då kommer det att fungera. Jag fick precis reda på att den inställningen är på som standard för mysql, vilket betyder att du faktiskt aldrig använder förberedda satser, php skapar internt dynamisk sql för dig, citerar värdena för dig och ersätter platshållarna. Ja, en stor wtf.

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

Förberedelserna emuleras som standard på grund av prestandaskäl.

Se även PDO MySQL:Använd PDO::ATTR_EMULATE_PREPARES eller inte?



  1. Hur man tar bort efterföljande blanksteg i SQL Server – RTRIM()

  2. Fråga SUM för två fält i två olika tabeller

  3. Använd COLUMNPROPERTY() för att returnera kolumn- eller parameterinformation i SQL Server

  4. Postgres släpptabell syntaxfel