我想要做的是:我有桌子 - > members
和桌子follow_user
。因此,当登录用户访问某个配置文件并单击follow button
时,函数INSERT INTO
会将loggedin
用户的ID和配置文件的ID插入到follow_user表中,直到现在一切正常。但我现在面临的最大困惑是,为当前查看个人资料提取所有followers from database
并在当前查看用户的个人资料中显示他们的name
,profilepic
,id
。这是代码我试图用户,但不能超过选择声明:
<?php
include("../secure/functions.php");
$currentid =$_SESSION['user_id'];
if(isset($_GET['id'])){
$viewuser =$_GET['id'];
$stmt = $mysqli->prepare("SELECT * FROM follow_user JOIN members WHERE follow_user.follow_id = ? OR members.id = ?");
$stmt->bind_param('s', $viewuser); // Bind "$user_id" to parameter.
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
if($stmt->num_rows == 1) {
$stmt->bind_result($id,$username,$user_level,$profilepic,$cover); // get variables from result.
$stmt->fetch();
}
}
?>
表格结构:
follow_user
column type Null Default Comments
fid int(11) No
id varchar(300) No
follow_id varchar(300) No
成员:
column Type Null Default Comments
id int(11) No
username varchar(30) No
email varchar(50) No
password char(128) No
salt char(128) No
user_level varchar(50) No
profilepic varchar(200) No
cover varchar(50) No
答案 0 :(得分:0)
将连接条件添加到您的查询中:
SELECT * FROM follow_user JOIN members ON members.id = follow_user.fid WHERE ....
答案 1 :(得分:-1)
查询中有两个参数,但您已绑定了一个参数。执行查询时,第二个?
为空。只需添加一个新的$stmt->bind_param('s', $viewuser);
就是您的解决方案。
或者使用下一个
使这些内容更具可读性$stmt = $mysqli->prepare("SELECT * FROM follow_user JOIN members WHERE follow_user.follow_id = :followId OR members.id = :memberId");
$stmt->bind_param(':followId', $viewuser);
$stmt->bind_param(':memberId', $viewuser);
$stmt->execute(); // Execute the prepared query.
请注意:followId
和:memberId
作为参数。准备好的语句不是为了将一个值绑定到多个参数而构建的。
另外,如果要正确组合表(从开发人员视图),如果存在FK(外键)关系,我建议使用LEFT JOIN
或INNER JOIN
。