Это правильный способ использования И, ИЛИ в mysql? - PullRequest
0 голосов
/ 10 июля 2020

Я работаю над системой личных сообщений, как на простом сайте форума. Но я не уверен, что запрос SELECT правильный.
Я пытаюсь показать каждое сообщение в окне чата, поэтому, например, пользователь A отправил сообщение пользователю B, а пользователь B мог отправить другое сообщение пользователю A. Но я продолжаю получать "проблемную" строку (которая находится в инструкции else, не будет запрашивать ...).

            $alici = $_GET['user'];
            $username = $_SESSION['username'];
            $mesajlar = $con->prepare("SELECT * FROM messages WHERE sender_name=:s AND receiver_name=:r OR sender_name=:s2, AND receiver_name=:r2");
            $mesajlar->execute([':s'=>$username, ':r'=>$alici, ':s2'=>$alici, ':r2'=>$username]);

             
            if ($mesajlar->rowCount() > 0) {
                foreach ($mesajlar as $mesajlar_each) {
                    $sender_name = $mesajlar_each['sender_name'];
                    $receiver_name = $mesajlar_each['receiver_name'];
                    $messsage = $mesajlar_each['message_text'];

                    if($sender_name == $username){
                        ?>
                            <div class="grey-message">
                                <a href="#"> Me </a>
                                <p> <?php echo $message; ?> </p>
                            </div>
                        <?php
                    }
                    else{
                        ?>
                            <div class="white-message">
                                <a href="#"> <?php echo $sender_name; ?> </a>
                                <p><?php echo $message; ?> </p>
                            </div>
                        <?php
                    }

                }
                 
            }
            else{
                //problem
                echo "problem";
            }

            ?> 
    
    ```

1 Ответ

1 голос
/ 10 июля 2020

Я мог бы написать так:

$query = "
    SELECT c.olumns
         , y.ou
         , a.ctually
         , n.eed
      FROM messages m
     WHERE (:s,:r) IN ((m.sender_name,m.receiver_name)
                      ,(m.receiver_name,m.sender_name))";

$mesajlar = $pdo->prepare($query);
$mesajlar->execute(['s' => $username,'r' => $alici]);
$result = $stmt->fetch();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...