php mysqli WHERE IN (?,?,? ...)

标签 php mysqli prepared-statement

<分区>

根据 http://us2.php.net/manual/en/mysqli-stmt.bind-param.php , 不同的类型是:

i   corresponding variable has type integer
d   corresponding variable has type double
s   corresponding variable has type string
b   corresponding variable is a blob and will be sent in packets

但是,你如何处理这个问题:

->prepare("SELECT blabla FROM foo WHERE id IN (?)")

在哪里?将是一个 ID 列表。可能有一项或多项:

$ids = "3,4,78";
->bind_param('s',$ids);

这可能吗?

我想使用准备好的语句,因为它会在循环中执行。

最佳答案

正确的语法是

->prepare("SELECT blabla FROM foo WHERE id IN (?, ?, ?)")

例如,该数组中的 3 个项目。然后,您必须使用 bind_param() 单独绑定(bind)这些项目中的每一个。

如果您对数组没有大小保证,则必须编写几个辅助函数来生成具有适当数量的“?”和绑定(bind)语句的 SQL。

关于php mysqli WHERE IN (?,?,? ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534377/

相关文章:

java - 使用 PreparedStatements 时 SQL Server 死锁

php - 什么时候在快速结账 paypal api 中访问取消 url?

php - 匹配(配对)标记(例如,括号或引号)

php - 如何为 Amazon S3 存储桶的对象创建下载链接?

php - 在 MySQL 中使用绑定(bind)参数作为用户定义的变量是否安全?

php - 使用准备好的语句检查用户覆盖凭据、用户覆盖权限以及删除 MySQL 表记录

javascript - 为什么当我单击提交按钮时丢失了文件名值

php - 通过表单将数据从一个表插入到另一个表

php - MySQLi 安装 PHP 5.5.8 Windows

php - 错误:mysqli::real_connect(): (08004/1040): 连接太多 [CodeIgniter v3]