php - "SELECT * FROM users WHERE id IN ( )"==失败

标签 php mysql

我有一个名为 sqlf() 的函数,它模拟准备好的语句。例如我可以做这样的事情:

$sql = sqlf("SELECT * FROM Users WHERE name= :1 AND email= :2",'Big "John"','bj@example.com') ;

由于各种原因,我不能使用准备好的语句,但我想模拟它们。我遇到的问题是像

这样的查询
$sql = sqlf("SELECT * FROM Users WHERE id IN (:1)",array(1,2,3) );

我的代码可以工作,但它会因空数组而失败,例如以下抛出 mysql 错误:

SELECT * FROM Users WHERE id IN ();

有人有什么建议吗?我应该如何将空数组翻译成可以注入(inject) IN 子句的 sql?替换为 NULL 将不起作用。

最佳答案

Null 是唯一可以保证不在集合中的值。为什么它不是一个选项?其他任何东西都可以看作是势集的一部分,它们都是值。

关于php - "SELECT * FROM users WHERE id IN ( )"==失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124606/

相关文章:

php - Ajax:将表单恢复为初始值

php - Yii2 中的事件记录 (PHP) : access other DB tables with relations

mysql - 选择临时表中具有最大值的所有行

mysql - 如何增加 Rails 中的连接超时?

php - 当id自动递增时回显id?

php - 从 PHP 中失败的 curl 响应中获取状态文本

php - 在 JavaScript 中解密 PHP AES/CBC 加密字符串

PHP file_get_contents 在一台服务器上工作,但在上出现授权错误

MYSQL 查询 - 交叉表?联盟?加入?选择?我应该寻找什么?

mysql - 将 MySQL 数据库内容迁移到 PostgreSQL