【问题标题】:Using IN with other conditions in Redbean在 Redbean 中将 IN 与其他条件一起使用
【发布时间】: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),'?')

标签: php sql redbean


【解决方案1】:

不要将$ids添加到数组中,将两者合并为一个数组,否则最终会成为嵌套数组。

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 2021-07-26
    • 2017-07-24
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    相关资源
    最近更新 更多