PostgreSQL과 PHP를 사용하는 많은 SQL 문을 사용하며 그 중 많은 부분은 'WHERE'절에 변수가 있습니다. INSERT 및 UPDATE에 대해 잘 실행되도록 준비된 명령문을 얻을 수는 있지만 WHERE 절에 변수가있는 SELECT 문에서 작동하게 만들 수는 없습니다. 나는 성공을위한 대답을 위해 구글을 샅샅이 뒤졌다. 아래 예를 살펴보십시오. 이것은 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);하지만 execute는'bool'을 반환합니다. –
@LawrenceCherone 그게 간단한 수정 이었어! 그게 효과가있어! INSERT 및 UPDATE에 대해 체인을 연결할 수 있지만 SELECT는 연결할 수없는 이유는 무엇입니까? 고마워요! – AppreciateCo
@AppreciateCo'execute()'는 부울을 반환하고,'query()'는 메서드 체이닝을 할 수있게 해주는'PDOStatement'를 반환합니다. – ishegg