检查另一个阵列的信息

时间:2013-08-21 11:31:19

标签: php mysqli

我在数据库中有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>';
        }
    }
}

但它似乎无法正常工作。

2 个答案:

答案 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很快,看看他的答案是否有合并请求! ;)