【问题标题】:How to use multiple inner joins along with multiple WHERE clause in mysqli prepared starement? [duplicate]如何在 mysqli 准备语句中使用多个内部连接和多个 WHERE 子句? [复制]
【发布时间】:2016-10-06 19:06:10
【问题描述】:

我正在尝试编写一个查询,我想使用基于第一个连接条件的 WHERE 子句和基于第二个连接的第二个 WHERE 子句进行选择。我已经写了几种方法,但总是显示错误:

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

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

这是我的查询:

方法一:

$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();

【问题讨论】:

  • 我已经尝试了这里的一切,它似乎不适合我。

标签: php mysql join mysqli


【解决方案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 = ?");

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

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

【讨论】:

  • 注意:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'inner join connections c on r.id = c.connections_userid where c.uid = ?' 附近使用的正确语法在第 81 行 /var/www/html/connections.php 中的第 3 行
  • 好了,现在不是更有帮助吗?如果您仍然无法找出错误所在,请发布一个新问题,包括您的表架构。
  • 我知道我需要在这个语句之后使用错误日志记录,但是我在为错误准备好的语句语法上苦苦挣扎,就像在这个 trigger_error($db->e​​rror) 中一样。那真的很有帮助。它还让我想到了使用 UNION 运算符而不是用这种愚蠢的方式编写它。再次感谢:)
  • 我也赞成你的回答,但我想它现在不会出现,或者自从我重新加入后就不会出现
  • 很高兴听到这个消息!我认为您仍然可以通过单击复选标记来接受答案。
猜你喜欢
  • 2015-03-16
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多