将字符串数组与 mysqi 准备语句绑定
使用 MySQL 时,通常需要将值数组绑定到WHERE IN 子句使用准备好的语句。虽然此任务看似简单,但存在一些可能导致错误的潜在陷阱。
在本文中,我们将探索使用 mysqli 准备好的语句绑定字符串数组的正确方法。我们还将提供所涉及步骤的详细说明并讨论潜在的解决方案。
出了什么问题?
问题中提供的代码示例错误地尝试使用bind_param 将城市数组绑定到准备好的语句。然而,bind_param 期望标量值(例如,字符串、整数等)作为其参数。尝试直接绑定数组会导致错误。
正确的方法
要成功将字符串数组绑定到准备好的语句,我们可以使用以下代码步骤:
示例代码
这是正确的示例code:
$mysqli = new mysqli("localhost", "root", "root", "db"); if(!$mysqli || $mysqli->connect_errno) { return; } $cities = explode(",", $_GET['cities']); $in = str_repeat('?,', count($cities) - 1) . '?'; $query_str = "SELECT name FROM table WHERE city IN ($in)"; $query_prepared = $mysqli->stmt_init(); if($query_prepared && $query_prepared->prepare($query_str)) { $types = str_repeat('s', count($cities)); $query_prepared->bind_param($types, ...$cities); $query_prepared->execute(); }
在此示例中,我们首先使用 str_repeat 创建一串占位符。然后,我们将此占位符字符串插入到查询中并准备语句。请注意我们如何使用 ...$cities 绑定城市数组的各个元素,并使用 str_repeat('s', count($cities)) 指定数据类型。
通过执行以下步骤,我们可以成功将字符串数组绑定到 mysqli 准备好的语句并按预期执行查询。
以上是如何正确地将字符串数组绑定到 MySQLi 准备好的语句?的详细内容。更多信息请关注PHP中文网其他相关文章!