如何在 mysqli 准备语句中使用多个内部连接和多个 WHERE 子句? [复制]
Posted
技术标签:
【中文标题】如何在 mysqli 准备语句中使用多个内部连接和多个 WHERE 子句? [复制]【英文标题】:How to use multiple inner joins along with multiple WHERE clause in mysqli prepared starement? [duplicate] 【发布时间】: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();
【问题讨论】:
我已经尝试了这里的一切,它似乎不适合我。 【参考方案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->error) 中一样。那真的很有帮助。它还让我想到了使用 UNION 运算符而不是用这种愚蠢的方式编写它。再次感谢:) 我也赞成你的回答,但我想它现在不会出现,或者自从我重新加入后就不会出现 很高兴听到这个消息!我认为您仍然可以通过单击复选标记来接受答案。以上是关于如何在 mysqli 准备语句中使用多个内部连接和多个 WHERE 子句? [复制]的主要内容,如果未能解决你的问题,请参考以下文章