我使用的是准备好的语句,除了这两个表之外,我还需要"选择"其他表来获取数据,但我得到的是:
Fatal error: Call to a member function bind_param() on a non-object in C:'xampp'htdocs'views'user'referral.php on line 16
如果我添加SELECT table1.*,table.*,"theothertable.*"
$stmt = $mysqli->prepare("SELECT friends.*, rc_usuario.* // or just *
FROM friends
INNER JOIN rc_usuario ON rc_usuario.id = friends.friendID
WHERE friends.userID = ?");
$stmt->bind_param('s', $connectedUserID);
这很好,我得到了我需要的东西,但我也需要从另一个表中获取数据,我不能进行其他选择,因为我需要一段时间才能打印所有数据。
问题是,我可以从两个表中选择类似的内容,同时从其他表中获取数据吗?
谢谢!
编辑:添加新语句:
if ($stmt = $mysqli->prepare("SELECT friends.*, members.*, account_type.*
FROM friends
INNER JOIN members ON members.id = friends.friendID
INNER JOIN account_type ON account_type.name = members.acc_type
WHERE friends.userID = ? AND members.acc_type = ?")) {
$stmt->bind_param('is', $connectedUserID, $connectedAcc_type);
$stmt->execute();
} else echo $mysqli->error;
您可以使用另一个INNER JOIN
来连接更多的表,如下所示;
INNER JOIN rc_usuario ON rc_usuario.id = friends.friendID
INNER JOIN rc_another ON rc_another.col = friends.coljoin
只需确保在联接表中选择了所需的所有列即可。
这也可能有助于在if中运行prepare语句,就像这样;
if($stmt = $mysqli->prepare("SELECT ...")) { // ... where the rest of your query is
$stmt->bind_param('s', $connectedUserID);
$stmt->execute();
}
else {
echo $mysqli->error;
}
这将使您了解SQL语法的任何问题。
希望这能有所帮助。