準備好的 MySQL 語句提供增強的安全性和效能優勢。然而,管理可變大小的變數清單對準備好的語句提出了挑戰。
可能的解決方案 1:虛擬值和多個呼叫
一個解決方案是定義一個語句固定數量的佔位符(例如 100)。對於超過此限制的值,需要多次呼叫。然而,這種方法會降低效率並增加程式碼複雜度。
可能的解決方案2:手動建立SQL 查詢
在沒有準備好的語句的情況下建立SQL 查詢會因潛在的安全風險而引入安全風險。注入攻擊。只有實施嚴格的注入預防機制,此解決方案才可行。
改良的解決方案
考慮以下增強功能,而不是上述方法:
建立臨時表:
建立臨時表:
建立臨時表:
建立臨時表:
$dbh = new PDO($dbConnect, $dbUser, $dbPass); $parms = array(12, 45, 65, 33); $inClause = implode(',', array_fill(0, count($parms), '?')); $sql = 'SELECT age, name FROM people WHERE id IN (%s)'; $preparesql = sprintf($sql, $inClause); $st = $dbh->prepare($preparesql); $st->execute($parms);
以上是如何有效率地使用MySQL預編譯語句和變長參數清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!