在軟體開發中,MySQL 準備好的語句經常需要處理輸入參數數量波動的查詢。典型場景涉及帶有未定義數量的 ID 的 IN
子句:
<code class="language-sql">SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)</code>
這需要一種靈活的方法來管理不同數量的參數。
一種方法是建立臨時表。 IN
子句中的每個參數都會插入到該表中。然後主表與臨時表連接來執行查詢。
更有效率、更受歡迎的解決方案是動態建置準備好的語句。這個過程包括:
$parmcount
)。 IN
) 產生 $inclause
子句。 $preparesql
) 建構 SQL 語句。 $st
)。 $st->execute($parms)
)。 範例:
<code class="language-php">$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);</code>
這種動態方法可以適應輸入參數的數量,即使在使用大量參數清單的情況下也能提供靈活性和效能。
以上是如何使用具有動態數量輸入參數的 MySQL 準備語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!