首頁 > 後端開發 > php教程 > 如何在 PHP 中使用 MySQL 中的預先準備語句來執行具有可變大小的 ID 清單的查詢?

如何在 PHP 中使用 MySQL 中的預先準備語句來執行具有可變大小的 ID 清單的查詢?

DDD
發布: 2024-12-06 20:05:14
原創
508 人瀏覽過

How Can I Use Prepared Statements in MySQL with PHP for Queries with Variable-Sized Lists of IDs?

使用PHP 在MySQL 中準備可變大小變數列表的語句

許多資料庫操作需要能夠使用可變數量的參數進行查詢。例如,在人員資料庫中,查詢可能會選擇 ID 位於特定清單中的記錄。但是,清單中的 ID 數量可能會有所不同。

此問題有多種可能的解決方案。

解 1:虛擬值

一種方法涉及建立一個接受固定數量變數的語句,並用保證不在表中的虛擬值填入其餘變數。但是,對於具有大量虛擬值的列表,此策略可能效率較低。

解決方案2:建立動態查詢

另一種選擇是避免使用準備好的語句和相反,動態構建查詢字串,仔細檢查可能的注入攻擊。這種方法需要保持警惕,以確保結果查詢是安全的且不會被利用。

高效解決方案

為了更有效地處理可變大小的變數清單:

使用臨時表的解:

建立一個臨時表,插入每個ID,然後在查詢中執行聯結。

動態語句準備的解決方案:

使用sprintf 函數動態建立一個具有適當數量佔位符的準備好的語句,然後使用提供的參數執行它:

$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$st=$dbh->prepare(sprintf(
    'SELECT age, name FROM people WHERE id IN (%s)',
    implode(',',array_fill(0,count($parms),'?'))
));
$st->execute($parms);
登入後複製

此技術提供了準備好的語句的效率,同時容納可變數量的參數。臨時表和動態語句準備方案的選擇取決於清單的大小,後者更適合較小的清單。

以上是如何在 PHP 中使用 MySQL 中的預先準備語句來執行具有可變大小的 ID 清單的查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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