PDO() Tableau de Déclaration ET d'un espace réservé

J'ai trouvé ce code sur DONC, ce qui est excellent pour l'utilisation de PDO et l'EN() instruction.

$values = explode(',', $values) ; # 1,4,7

$placeholders = rtrim(str_repeat('?, ', count($values)), ', ') ;
$query = "SELECT * FROM table WHERE id IN ($placeholders)";

$stm = $db->prepare($query) ;
$stm->execute($values) ;

Cependant, comment puis-je mélanger dans un autre ajout à la requête de sorte que la requête ressemble à ceci:

$query = "SELECT * FROM table WHERE id IN ($placeholders) AND product=?";
$stm = $db->prepare($query) ;
$stm->execute(array($values,$product)) ; //error happens when adding product placeholder

J'ai pensé que cela pourrait fonctionner, mais je reçois:

Avertissement: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables ne correspond pas à un nombre de jetons dans la ligne 3 ($stm ligne)

Aucune idée de la façon d'obtenir ce à se comporter comme prévu?

Mis à JOUR exécuter à la matrice, ne fonctionne toujours pas..

Cette rtrim(str_repeat('?, ', count($values)), ', ') ; est agréable. merci 🙂

OriginalL'auteur Maverick | 2012-01-24