Как отобразить надпись в зависимости от результата из базы данных?

#php #mysql

Вопрос:

В базе данных столбец состояния может иметь два значения: друг и ожидание. Я хочу отобразить надпись друг, если человек мой друг, надпись ждет, если я жду ответа, и надпись добавить, если у меня его нет в друзьях. Я создал функцию для этого, но она ничего не показывает.

  public function status()
 {
    $id =  $_GET['id'];
    $session  = $_SESSION['id'];
    $sql = $this->database->connect()->prepare("SELECT status FROM user JOIN friend ON user.id = friend.request_from_id where  request_to_id = :id and request_from_id = :session OR  request_to_id = :session and request_from_id = :id");
    $sql->bindParam(':session',$id, PDO::PARAM_INT);
    $sql->bindParam(':id',$session, PDO::PARAM_INT);
    $sql->execute();

    if($sql->rowCount())
    {
        $row = $sql->fetch();

        if($row['status']== 'friend']
        {
            return 'friend';
        }
        else if($row['status']=='waiting')
        {
            return 'Waiting';
        }
    }
    else if(!($id != $session))
    {
        return  'This is me';
    }
    else
        return 'Add to friend';
}
 

Комментарии:

1. В случае, когда статус не является ни «другом», ни «ожиданием» (возможно ли значение NULL?), эта функция не вернет значение.

2. Возможно, так и должно быть, но этого не произойдет 🙂 Если есть строки, но значение status не является ни одной из них, возвращаемое значение по умолчанию не указывается.

3. Это мелочь, но в вашем SQL вы смешиваете AND , и OR это предполагает приоритет оператора. Это совершенно нормально, пока вы это запомнили (я знаю, что нет), но я бы рекомендовал использовать круглые скобки, чтобы избежать какой-либо двусмысленности для всех, кому нужно прочитать этот код.

4. Отладка-жизненно важный навык для программиста. Это так же важно, как и умение писать код. Вы должны изучать его в то же время. Как вы ожидаете когда-либо устранить какие-либо проблемы в своем коде, если вы не можете выполнить базовые тесты на нем? Вот руководство для начинающих: phpknowhow.com/basics/basic-debugging . Ваша цель должна состоять в том, чтобы определить, по какому пути движется код, и каковы значения значимых переменных, которые могут на это повлиять.

5. @ChrisHaas FWIW, я не думаю, что это мелочь. Мне кажется, это довольно-таки важно!