[英]Not getting proper data in php mysql
表格:要求
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
,該request
具有兩個鍵字段,即friend_id
和candidate_id
friend_id
。 現在,我$_SESSION['candidate_id']='20181010181207'
。 因此,如上所述,如何獲得預期的輸出? 請幫我。
謝謝
我想你要:
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/>";
}
}
這將顯示值,即是不一樣的“輸入”,換句話說除去20181010181207
條目。
或作為一個單行:
echo $row_ac['candidate_id']==$_SESSION['candidate_id'] ? $row_ac['friend_id] : $row_ac['candidate_id'];
您的要求是:
select
friend_id,
candidate_id
from request
where candidate_id=:candidate_id or friend_id=:candidate_id
因此,通常會返回所有行,其中:candidate_id
在friend_id
或candidate_id
friend_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/>";
得到你想要的
試試這個
我希望它能工作
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,否則else部分將執行,因此請嘗試if else
條件並檢查
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.