【发布时间】:2013-10-06 16:30:29
【问题描述】:
我正在尝试使用“IN”和“=”来查找一些 bean。我目前正在使用此代码:
$ids = array(1,2,3,4);
$user = 1;
$things = R::find(
'thing',
'id IN ('.R::genSlots($ids).') AND user = ?',
array(
$ids,
$user
)
);
这给了我一些错误:
PHP注意事项:rb.php第217行数组到字符串的转换
致命错误:未捕获 [HY093] - SQLSTATE[HY093]:无效参数编号:绑定变量的数量与第 267 行 rb.php 中抛出的令牌数量不匹配
如果我使用 $id 中的一个项目运行此代码,我只会收到通知,但无论哪种方式我都没有得到任何结果。
我假设它试图将 $id 视为单个变量。我错过了什么?
【问题讨论】:
-
你确定
R::genSlots()接受一个数组吗? -
这不是它的用途吗?
-
为什么不简单地使用 implode(',', $ids) 而不是 R::genSlots ?
-
@OIS 我可以,但参数化查询通常是一个更好的主意。
-
你想要的是 implode(',', array_fill(0,count($ids),'?')