AOP - numéro de paramètre non Valide
Tout récemment, je l'ai passé à l'aide de PDO en PHP/MySQL et transformé quelques dizaines de requêtes. La plupart d'entre eux ont travaillé, cependant cela très facile, déclenche une exception à $sql->execute()
$sql=$pdo->prepare("SELECT id FROM user WHERE username = :username LIMIT 1");
$sql->execute(array(':username',$username));
PDOStatement::execute() la méthode pdostatement.exécuter SQLSTATE[HY093]: Invalid parameter number: number of bound variables ne correspond pas à un nombre de jetons dans ...
Après recherche, j'ai trouvé ce lien: https://bugs.php.net/bug.php?id=60515
... et donc essayé de modifier la requête pour
$sql=$pdo->prepare("SELECT `id` FROM `user` WHERE `username` = :username LIMIT 1");
$sql->execute(array(':username',$username));
Mais toujours avec le même résultat. Parviendrez-vous à voir ce qui est évidemment faux ou pourquoi cette requête fonctionne pas quand tous les autres l'ont fait?
Je vous remercie beaucoup à l'avance!
- "AOP - numéro de paramètre non Valide si c'est correct". Non, c'est incorrect.
- ouais, vous avez raison... déjà changé le titre... j'étais comme un aveugle, je vous remercie pour votre aide!
Vous devez vous connecter pour publier un commentaire.
La
':username',$username
ne fonctionne que dans bindParam() méthode:Prendre un coup d'oeil ici: http://www.php.net/manual/en/pdostatement.bindparam.php
Pour l'exécuter, vous devez passer un bon tableau d'entrées-seules les valeurs:
Espace réservé:
Vous pouvez également utiliser cette:
Mais pour cela, vous devez modifier votre requête pour cette:
L' ? fonctionne comme palceholder et de prendre les variables de la matrice. Lorsque vous utilisez plus d'espace réservé dans votre instruction SQL la fonction prend toutes les variables de la matrice dans l'ordre.
Ce n'est pas un bug, vous devez fournir deux paramètres pour seulement un espace réservé.
devrait être