首页 >后端开发 >php教程 >如何将字符串数组绑定到 MySQLi WHERE IN (?) 子句?

如何将字符串数组绑定到 MySQLi WHERE IN (?) 子句?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-25 22:05:13375浏览

How to Bind an Array of Strings to a MySQLi WHERE IN (?) Clause?

使用 MySQLi 在 WHERE IN (?) 子句中绑定字符串数组

使用 MySQLi 准备好的语句时,必须理解如何将值数组绑定到 WHERE IN (?) 子句。本文提供了有效解决此问题的全面指南。

挑战

目标是将城市名称数组动态绑定到 WHERE IN 子句中MySQLi 准备好的语句。但是,由于数组绑定不正确,提供的代码最初无法执行。

绑定字符串数组

存在多种绑定字符串数组的方法。让我们探索可用的方法:

1。 execute_query() 函数 (PHP 8.2)

PHP 8.2 中引入了execute_query() 函数,提供了最简单的解决方案。此方法允许一次性传递 SQL 语句和要绑定的值数组。

$array = ['Nashville', 'Knoxville'];
$parameters = str_repeat('?,', count($array) - 1) . '?';
$sql = "SELECT name FROM table WHERE city IN ($parameters)";
$result = $mysqli->execute_query($sql, $array);

2.数组传入execute() (PHP 8.1)

在 PHP 8.1 中,您可以将数组直接传递给execute() 方法,无需占位符或绑定。

$stmt = $mysqli->prepare($sql);
$stmt->execute($array);

3.旧版本的准备/绑定/执行

对于 PHP 8.1 之前的版本,需要执行以下步骤:

  • 创建一串占位符(例如“?, ?" 对于两个值的数组)。
  • 将此字符串添加到查询。
  • 准备语句。
  • 创建一个类型的字符串(例如,“ss”表示两个字符串值)。
  • 使用参数解包绑定数组值
$types = str_repeat('s', count($array));
$stmt->bind_param($types, ...$array);

示例:

$array = ['Nashville', 'Knoxville'];
$in = str_repeat('?,', count($array) - 1) . '?';
$sql = "SELECT name FROM table WHERE city IN ($in)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param(str_repeat('s', count($array)), ...$array);
$stmt->execute();
$result = $stmt->get_result();

通过遵循这些方法,您可以有效地将字符串数组绑定到 WHERE IN (? MySQLi 准备好的语句中的 ) 子句。

以上是如何将字符串数组绑定到 MySQLi WHERE IN (?) 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn