当前位置: 首页 > 知识库问答 >
问题:

如何在mysqli-prepared-starement中使用多个内部联接以及多个WHERE子句?[副本]

翟曦之
2023-03-14

我正在尝试编写一个查询,其中我希望根据第一个连接条件选择WITHWHERE子句,并根据第二个连接条件选择第二个where子句。我用了几种方法编写了它,但它总是显示出一个错误:

Fatal error: Call to a member function bind_param() on boolean in /var/www/html/connections.php on line 80

$user_id正在从其他地方获取。所以没有问题,如果我在这里运行一个连接,它工作正常。

我的问题是:

方法1:

$sql = $db->prepare("SELECT r.* from registered_users r 
        inner join connections c2 on r.id = c2.uid
        inner join connections c on r.id = c.connections_userid where c2.connections_userid = ? or c.uid = ?");

$sql->bind_param("ii",$user_id,$user_id);           
$sql->execute();

方法二:

$sql = $db->prepare("SELECT r.* from registered_users r 
        inner join connections c2 on r.id = c2.uid where     c2.connections_userid = ?
        inner join connections c on r.id = c.connections_userid where c.uid = ?");

$sql->bind_param("ii",$user_id,$user_id);           
$sql->execute();

共有1个答案

荀金鹏
2023-03-14

您的准备有错误,请检查它

$sql = $db->prepare("SELECT r.* from registered_users r 
    inner join connections c2 on r.id = c2.uid
    inner join connections c on r.id = c.connections_userid where c2.connections_userid = ? or c.uid = ?");

if (!$sql) {
   //error !! Let's report it!
   trigger_error($db->error);
}

$sql->bind_param("ii",$user_id,$user_id);           
$sql->execute();
 类似资料:
  • 问题内容: 所以我有四个桌子。每个表都有一个与前一个表ID相同的ID。因此,我的点击表中有一个ID和一个广告来源的ID。在广告表中,它有一个广告ID和一个来自其广告系列的ID。所以这是一个例子。 因此,要找出表4中的值从何而来,我需要遍历每个表并检查它们具有哪个ID。基本上,我想知道表1中的哪些值与表4中的值相关联。 表4中的内容是网站的访问者,表1中的内容是互联网广告。我想知道哪些访客来自哪些广

  • 问题内容: 例如,我对我的书籍清单有动态过滤器,可以在其中设置特定的颜色,作者和类别。该过滤器可以一次设置多种颜色,也可以设置多种类别。 如何有条件地添加“ where”? 问题答案: 如您在API文档中所见,collection()方法返回一个CollectionReference。CollectionReference扩展了Query。Query.where()和Query.orderBy()

  • 问题内容: 我试图像这样更新我的表: 我可以做一个,但是会发送50多个单独的查询,这非常慢。这就是为什么我希望将其合并为1个大查询。 (我确实为每行使用一个 id ,但是 game_id , x 和 y 的组合才是我用来标识所需行的方法。) 这里描述了来自codeIgniter的update_batch()函数: 使用CodeIgniter更新批处理 是有用的,并且几乎是完美的,但是它仅允许1个单

  • 问题内容: 我正在使用Laravel Eloquent查询构建器,并且在一个查询中需要多个条件的子句。它可以工作,但并不优雅。 例: 有没有更好的方法可以执行此操作,还是应该坚持使用此方法? 问题答案: 在Laravel 5.3中从6.x开始仍然适用,您可以使用更细粒度的wheres作为数组传递: 就个人而言,我并没有在多个调用中找到用例,但事实是您可以使用它。 自2014年6月起,您可以将数组传

  • 下面是我开始使用的代码,但我不确定该去哪里。看看这个问题的解决方案,我似乎需要根据下面的查询下载数据,然后在客户端对其进行排序。我似乎做不到的事

  • 问题内容: 我正在尝试检索仅在到达日期和机场匹配时才返回飞行数据的数据。我似乎无法找出最佳解决方案。我只能在机场或到达日期相同的地方提取数据,而不能在两者都提取(只能使用一次)。这是我当前的Java代码如下所示: 这是数据本身: 当前的Java代码将返回 仅 具有相同机场的所有子级。如您所料,当客户端需要排序的数据量比上述测试数据大得多时,这是不可行的。如何更好地在Firebase端过滤数据? 问