在 PDO 中使用 LIMIT 子句传递数组参数
在 PHP 中,PDOStatement 类提供了一种使用参数化值执行 SQL 查询的方法。但是,当使用 LIMIT 子句时,使用 bindParam() 方法绑定参数不起作用。
要解决此问题,请考虑以下解决方案:
<code class="php">$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :offset, :limit"; $stmt = $pdo->prepare($sql); // Turn off PDO emulation of prepared statements for MySQL $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $array = [':id' => 5]; // Bind the LIMIT parameters $stmt->bindParam(':offset', $limit1, PDO::PARAM_INT); $stmt->bindParam(':limit', $limit2, PDO::PARAM_INT); // Execute the query $stmt->execute($array); $results = $stmt->fetchAll();</code>
通过禁用 PDO 模拟预准备语句(MySQL 默认),它允许您在 LIMIT 子句中使用参数化值。此方法可确保使用指定参数正确执行查询。
请注意,关闭模拟可能会影响性能。更多详情请参考PDO MySQL: Use PDO::ATTR_EMULATE_PREPARES or not?.
文档以上是可以在 PDO 中使用 LIMIT 子句绑定数组参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!