首頁 > 資料庫 > mysql教程 > 將參數綁定到 WHERE IN 子句時,為什麼 PDO 只回傳一行?

將參數綁定到 WHERE IN 子句時,為什麼 PDO 只回傳一行?

DDD
發布: 2024-11-25 09:19:11
原創
859 人瀏覽過

Why Does PDO Return Only One Row When Binding Parameters to a WHERE IN Clause?

使用PDO 結合WHERE IN 子句參數

問題:

嘗試使用以下方式將參數綁定到WHERE IN 子句時PDO,結果計數始終為1,這與手動插入未經參數化的值不同。造成這種差異的原因是什麼?

程式碼:

$myArray = implode($myArray, ',');
$sth = $dbh->prepare('SELECT foo FROM bar WHERE ids IN (:ids)');
$sth->bindParam(':ids', $myArray);
$sth->execute();
$result = $sth->fetch();
echo $sth->rowCount();
登入後複製

答案:

不幸的是,PHP 資料物件(PDO) 不支援直接綁定IN 子句參數。 $myArray 陣列被視為單一字串,類似於以下 SQL:

SELECT foo FROM bar WHERE ids IN ('1,2,3')
登入後複製

儘管存在多個逗號分隔值,資料庫仍將它們解釋為一個字串值。

為了實現所需的行為,必須將IN 子句手動插入到查詢中,如下所示:

'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
登入後複製

不幸的是,有目前沒有替代PDO 的IN 子句中的參數綁定機制。

以上是將參數綁定到 WHERE IN 子句時,為什麼 PDO 只回傳一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板