我有一个名为 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/