簡體   English   中英

在PHP MySQL中無法獲取正確的數據

[英]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_idcandidate_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_idfriend_idcandidate_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM