在软件开发中,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中文网其他相关文章!