我不知道这个问题是否足够明确。
我从表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;
}
}
?>
谢谢。
答案 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);
希望这有助于你。