私はPostgreSQLとPHPを使用して多くのSQL文を使用していますが、その多くは 'WHERE'節に変数を持っています。私は、INSERTとUPDATEのためにうまく実行するために準備された文を得ることができますが、WHERE節に変数を持つSELECT文では動作させることはできません。私は成功のための答えのためにGoogleを洗った。下記の例をご覧ください。これは、bankrecというテーブルから最近調整された銀行残高を選択するためです。私は何が欠けていますか?私はこれを実行するとWHERE句にパラメータをバインドできませんPDO
$rec = $dbh->prepare('SELECT clearedbal FROM bankrec WHERE bankno = :bankno ');
$result = $rec->execute(['bankno'=>$bankno])->fetch(PDO::FETCH_ASSOC);
私が手:
"Fatal error: Call to a member function fetch() on boolean"
をしかし、私は単純に準備された文なしでクエリを実行すると、私が欲しい結果を得るため、クエリが正しいことを知っているが、それはに対して脆弱ですSQLインジェクションは:
$rec = $dbh->query("SELECT clearedbal FROM bankrec WHERE bankno = '$bankno' ")->fetch(PDO::FETCH_ASSOC);
をチェーンしないでください。 '$ rec-> fetch(PDO :: FETCH_ASSOC);'を実行すると 'bool'が返されます。 –
@LawrenceCheroneそれは簡単な修正でした!それは動作します! INSERTとUPDATEのようにチェーン化できますが、SELECTではできません。どうもありがとうございました! – AppreciateCo
@AppreciateCo 'execute()'はブール値を返し、 'query()'はメソッド連鎖を可能にする 'PDOStatement'を返します。 – ishegg