簡體   English   中英

無法將參數綁定到WHERE子句PDO

[英]Can't bind parameters to WHERE clause PDO

我使用PostgreSQL和PHP使用了很多sql語句,其中很多都在'WHERE'子句中有變量。 我可以獲得准備好的語句來執行INSERT和UPDATE,但是我不能使它適用於WHERE子句中帶變量的SELECT語句。 我已經搜索谷歌的答案沒有成功。 請看下面的例子。 這是從名為bankrec的表中選擇最近的對帳銀行余額。 我錯過了什么?

$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);

正如您在鏈接中看到的那樣,PDO的execute方法按定義返回boolean。

我會推薦這種方法:

$rec = $dbh->prepare('SELECT clearedbal FROM bankrec WHERE bankno = :bankno ');
if($rec->execute(['bankno'=>$bankno])){
  $result=$rec->fetch(PDO::FETCH_ASSOC);
  //do another stuff there
} else {
  //Query failed handle error
}

如您所見,您可以使用execute來確定查詢是否成功執行。 此外,如果您需要獲取多行結果,則應使用fetchAll方法: http//php.net/manual/en/pdostatement.fetchall.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM