Не получить правильные данные в PHP MySQL - PullRequest
0 голосов
/ 11 октября 2018

таблица: запрос

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'.Итак, как я могу получить ожидаемый результат, как я уже упоминал выше?Пожалуйста, помогите мне.

Спасибо

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Я думаю, что вы хотите:

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'];
0 голосов
/ 11 октября 2018

Ваш запрос:

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/>";, чтобы получить то, что вы хотите

0 голосов
/ 11 октября 2018

попробуйте это

Я надеюсь, что оно будет работать

if($row_ac['friend_id']==$_SESSION['candidate_id']){
    echo $row_ac['candidate_id']."<br/><br/>";
else{
    echo $row_ac['friend_id']."<br/><br/>";
}

Поскольку условие And всегда ложно в вашем случае, а остальная часть будет выполняться, так что попробуйте с условием if else и проверьте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...