J'utilise beaucoup d'instructions sql avec PostgreSQL et PHP et beaucoup d'entre elles contiennent des variables dans la clause 'WHERE'. Je peux obtenir des instructions préparées à exécuter juste bien pour INSERT et UPDATE mais je ne peux pas le faire fonctionner pour les instructions SELECT avec des variables dans la clause WHERE. J'ai parcouru google pour une réponse sans succès. S'il vous plaît jeter un oeil à l'exemple ci-dessous. Ceci permet de sélectionner un solde bancaire réconcilié récent à partir d'une table appelée bankrec. Qu'est-ce que je rate?Impossible de lier les paramètres à la clause WHERE PDO
$rec = $dbh->prepare('SELECT clearedbal FROM bankrec WHERE bankno = :bankno ');
$result = $rec->execute(['bankno'=>$bankno])->fetch(PDO::FETCH_ASSOC);
Quand je lance ce que je reçois:
"Fatal error: Call to a member function fetch() on boolean"
Cependant, je sais que la requête est correcte, car tout simplement l'exécution d'une requête sans une déclaration préparée moi obtient le résultat que je veux, mais il est vulnérable aux injection sql:
$rec = $dbh->query("SELECT clearedbal FROM bankrec WHERE bankno = '$bankno' ")->fetch(PDO::FETCH_ASSOC);
Ne pas le chaîner, il devrait être '$ rec-> récupérer (PDO :: FETCH_ASSOC);' mais l'exécution retourne 'bool' –
@LawrenceCherone Eh bien, c'était une solution simple! Ça marche! Pourquoi puis-je l'enchaîner comme ça pour INSERT et UPDATE mais pas SELECT? Merci beaucoup! – AppreciateCo
@AppreciateCo 'execute()' renvoie une valeur booléenne, tandis que 'query()' renvoie une valeur 'PDOStatement', ce qui permet de chaîner la méthode. – ishegg