亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PDO 準備語句為不同的查詢綁定一次參數

PDO 準備語句為不同的查詢綁定一次參數

PHP
慕桂英546537 2021-11-26 17:56:25
我PDO prepared statements用來執行兩個查詢:SELECT count(*) FROM vocabulary WHERE  `type` = :type AND `lesson` = :lesson;SELECT * FROM vocabulary WHERE  `type` = :type AND `lesson` = :lesson limit 100;獲取計數的第一個查詢按預期工作,我得到了行數。$stmt = $this->connection->prepare($sql);foreach ($params as $key => $value)    $stmt->bindValue(":" . $key, $value, PDO::PARAM_STR);$stmt->execute();$count = $stmt->fetchColumn();$sql .= " limit $limit;";$sql = str_replace("count(*)", $columns, $sql);$stmt = $this->connection->prepare($sql);$stmt->execute();$result = $stmt->fetchAll(PDO::FETCH_CLASS, $class);但是在執行第二個查詢時,我得到:SQLSTATE[HY093]: Invalid parameter number: no parameters were bound因此,我想知道,如果我有多個參數完全相同的查詢,是否需要再次使用綁定相同的參數foreach ($params as $key => $value)    $stmt->bindValue(":" . $key, $value, PDO::PARAM_STR);或者如果有辦法只綁定一次參數。
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

如果我有多個參數完全相同的查詢,我是否需要再次使用綁定相同的參數

是的當然。

參數綁定到每個查詢,而不是全局 PDO 或數據庫。

附帶說明一下,使用 PDO,您不必顯式綁定變量,因此您的“問題”有一個解決方案:根本不綁定,而是將數據直接發送到 execute(),如 Dharman 中所示很好的答案


查看完整回答
反對 回復 2021-11-26
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

無需像這樣修改您的 SQL。您的代碼基本上歸結為:


$stmt = $this->connection->prepare('SELECT count(*) FROM vocabulary WHERE  `type` = :type AND `lesson` = :lesson');

$stmt->execute($params);

$count = $stmt->fetchColumn();


$stmt = $this->connection->prepare('SELECT * FROM vocabulary WHERE  `type` = :type AND `lesson` = :lesson limit 100');

$stmt->execute($params);

$result = $stmt->fetchAll(PDO::FETCH_CLASS, $class);


查看完整回答
反對 回復 2021-11-26
  • 2 回答
  • 0 關注
  • 202 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號