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

Come posso passare un array di parametri PDO ma specificarne ancora i tipi?

Se disattivi l'impostazione predefinita di PDO::ATTR_EMULATE_PREPARES , allora funzionerà. Ho appena scoperto che quell'impostazione è attiva per impostazione predefinita per mysql, il che significa che non usi mai effettivamente istruzioni preparate, php crea internamente sql dinamico per te, citando i valori per te e sostituendo i segnaposto. Sì, un grande wtf.

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

Le preparazioni vengono emulate per impostazione predefinita per motivi di prestazioni.

Vedi anche PDO MySQL:Usa PDO::ATTR_EMULATE_PREPARES o no?