表:请求
id friend_id candidate_id
== ============== ==============
1 20180928115958 20180925112428
2 20181008181142 20180925112428
3 20180928115958 20181008181142
4 20181010181207 20180928115958
5 20181008181142 20181010181207
6 20181010181207 20180925112428
查询
<?php
$_SESSION['candidate_id']=20181010181207;
$sql_ac = mysqli_query($con,"select friend_id,candidate_id from request where candidate_id='".$_SESSION['candidate_id']."' or friend_id='".$_SESSION['candidate_id']."'");
while($row_ac = mysqli_fetch_array($sql_ac))
{
if($row_ac['friend_id']==$_SESSION['candidate_id'] && $row_ac['candidate_id']==$_SESSION['candidate_id'])
{
echo "";
}
else
{
echo $row_ac['friend_id']."<br/><br/>";
echo $row_ac['candidate_id']."<br/><br/>";
}
}
?>
意外的输出:
20181010181207
20180928115958
20181008181142
20181010181207
20181010181207
20180925112428
预期产量
20180928115958
20181008181142
20180925112428
在此代码中,我具有表request
,该表具有两个键字段,即friend_id
和candidate_id
。现在,我$_SESSION['candidate_id']='20181010181207'
。因此,如上所述,如何获得预期的输出?请帮助我。
谢谢
答案 0 :(得分:1)
我认为您想要
while($row_ac = mysqli_fetch_array($sql_ac))
{
if($row_ac['friend_id'] != $_SESSION['candidate_id']
echo $row_ac['friend_id']."<br/><br/>";
}
if($row_ac['candidate_id'] != $_SESSION['candidate_id']
echo $row_ac['candidate_id']."<br/><br/>";
}
}
这将显示与'input'相同的值,换句话说,删除20181010181207
条目。
或者作为一个单行:
echo $row_ac['candidate_id']==$_SESSION['candidate_id'] ? $row_ac['friend_id] : $row_ac['candidate_id'];
答案 1 :(得分:1)
您的请求是:
select
friend_id,
candidate_id
from request
where candidate_id=:candidate_id or friend_id=:candidate_id
因此,通常返回:candidate_id
在列friend_id
或candidate_id
中的所有行:
4 20181010181207 20180928115958
5 20181008181142 20181010181207
6 20181010181207 20180925112428
现在您想要的是:
20180928115958 // this is candidate_id of row 4
20181008181142 // this is friend_id of row 5
20180925112428 // this is candidate_id of row 6
如果只希望列“ XXX_id”的值不等于:candidate_id
,请尝试以下操作:
select
IF(friend_id = :candidate_id, '', friend_id) as friend_id,
IF(candidate_id = :candidate_id, '', candidate_id) as candidate_id
from request
where candidate_id=:candidate_id or friend_id=:candidate_id
这样,您将为与:candidate_id
相匹配的列返回空值。
现在只需在显示测试之前添加测试即可,以免出现空行:
if (!empty($row_ac['friend_id'])
echo $row_ac['friend_id']."<br/><br/>";
if (!empty($row_ac['candidate_id'])
echo $row_ac['candidate_id']."<br/><br/>";
您也可以这样做:
select
IF(friend_id = :candidate_id, candidate_id, friend_id) as result_id
from request
where candidate_id=:candidate_id or friend_id=:candidate_id
这样,您将仅返回一个结果:不等于:candidate_id
的结果。
然后只需echo $row_ac['result_id']."<br/><br/>";
即可得到想要的东西
答案 2 :(得分:0)
尝试这个
我希望它能工作
if($row_ac['friend_id']==$_SESSION['candidate_id']){
echo $row_ac['candidate_id']."<br/><br/>";
else{
echo $row_ac['friend_id']."<br/><br/>";
}
因为在您的情况下,And
条件始终为false,否则部分将执行,因此请尝试使用if else
条件并检查