如何在while循环中保留mysqli_fetch_array()值?

时间:2016-05-09 14:52:18

标签: php mysql mysqli

我不知道这个问题是否足够明确。

我从表A中获取一些ID,查询返回多行。我也从其他表B中获取其他一些ID。我的问题是我想检查表A的ID是否与表B中的ID相同,如果是,我必须打印一个值,否则其他值应该是打印。我该如何实现呢?

我尝试过使用两个while循环(一个在另一个循环中),但内部while循环只执行一次,值变为null。所以它无法检查条件。

<?php
include('includes/template.php');
$user=$_SESSION['login_user'];

if(isset($_POST['action'])){
if($_POST['action']=="searchb"){
  $query=secure_input($_POST['searchbox']);
                  if(!empty($query)){
                    $sql="select id,username, name, email from mysql.registration_zany where name like '%".$query."' and privacy=0";
                          $res=mysqli_query($con,$sql);
                 $resmsg="<div class='alert alert-success' role='alert'>SEARCH RESULTS FOR :<b>".$query."</b></div>";
             }
      }
}
$sql2="select id from mysql.friends where id2='".$id."' and Request_Status=1 and id !=".$id;
$res2=mysqli_query($con,$sql2);
$i=1;
while($row=mysqli_fetch_array($res,MYSQLI_NUM)){
$flag=0;
  while($fr[i]=mysqli_fetch_array($res2,MYSQLI_NUM)){
    #echo $row[0];
if($fr[i][0]==$row[0]){
  $flag=1;
 }
  }
$i++;
if($flag){
$table="<div class='row'>
<div class='col-xs-6 col-md-4'>
  <div class='thumbnail'>
UserName:".$row[1]."<br>Profile:".$row[2]."<br>E-mail:".$row[3]."
<p><span class='label label-info'>Friend</span></p></div></div>";
echo $table;
}
else{
$table="<div class='row'>
<div class='col-xs-6 col-md-4'>
<div class='thumbnail'>
 UserName:".$row[1]."<br>Profile:".$row[2]."<br>E-mail:".$row[3]."
 <p><form action='request.php' method='post'>
 <input name='action' type='hidden' value='".$row[0]."' >
  <input type='submit' class='btn btn-primary' name='req' value='Send Request'>
  </form></p></div></div>";
 echo $table;
 }
  }
 ?>

谢谢。

2 个答案:

答案 0 :(得分:2)

如果我理解正确, 您是要查看第一个表中的每个ID与第二个表中的每个值吗?。

为简单起见,我假设这些表存在于不同的服务器上,无法连接。

如果您将所有ID存储到数组$table1[] = $row['id'];

您可以在浏览2时使用PHP的in_array函数进行搜索。

in_array($row['id'], $table1)(如果存在值,则为真)

如果您只想知道两个表中存在的内容,可以在SQL中执行此操作。不知道你的数据库结构我会松散地这样做

$sql="SELECT
 q1.id,
 count(SELECT q2.id from mysql.friends q2 WHERE q2.id2=q1.id and Request_Status=1 and q2.id !=q1.id) as 'hasmatch',
 q1.username,
 q1.name,
 q1.email FROM mysql.registration_zany q1 WHERE q1.name LIKE '%".$query."' AND q1.privacy=0";

我会玩这个,我有点生疏,它可能会掉落没有匹配的值。我希望伯爵能消除这个问题。

答案 1 :(得分:0)

内部while循环变为空,因此它不会检查其中的if条件。

我的建议是使用mysqli_free_result();然后在内部while循环之外执行sql语句。

mysqli_free_result($res2);
$sql2="select id from mysql.friends where id2='".$id."' and Request_Status=1  and id !=".$id;
$res2=mysqli_query($con,$sql2);

希望这有助于你。