我在数据库中有2个表,表圈和表闲话
表圈有3列:id,idfrom,idto。
表格闲话有id,userid,八卦
我的目标是只有当这个八卦的用户ID(idto)和pageuser(idfrom)的id在表圈中的同一行时才能回应所有的闲话。
我写了这段代码,
$query = 'SELECT * FROM gossips ORDER BY id DESC';
$result = mysqli_query($cxn, $query)
or die("Couldn't execute query");
$querycircle = 'SELECT idfrom,idto FROM circle WHERE idfrom="{$pageuserid}" ';
$resultcircle = mysqli_query($cxn, $querycircle)
or die("Couldn't check if user in circle.");
while($row = mysqli_fetch_assoc($result))
{
while($rowcheck = mysqli_fetch_assoc($resultcircle))
{
if($row['userid'] == $rowcheck['idto'] || $row['userid'] == $_COOKIE['id']){
echo '<div class="gossip">'.$row['gossip'].'</div>';
}
}
}
但它似乎无法正常工作。
答案 0 :(得分:0)
为此尝试单个SQL查询,然后尝试使用一个while循环。
Select A.gossip from gossips A, circle B where A.userid=B.idto and B.idfrom="{$pageuserid}" order by A.id DESC;
注意:您还可以通过在查询中添加额外比较来比较COOKIE值,例如and B.userid=$_COOKIE["id"]
(更好地将cookie值保存在变量中)
答案 1 :(得分:0)
您打算在第一个while循环的每一轮中使用mysqli_fetch_assoc($resultcircle))
获取相同的数据吗?
然后你应该首先在数组中缓冲这些数据,因为执行mysqli_fetch_assoc
总是会在每次连续调用时为你提供下一个数据集。它不会在数据之上重新启动。
(顺便说一句,这样更好:while(null !== ($rowcheck = mysqli_fetch_assoc($result)))
)
实现目标的另一种方法是只执行一个组合的SQL请求。
编辑:Sudip Pal很快,看看他的答案是否有合并请求! ;)