Запустите запрос mysql в запросе mysql - PullRequest
2 голосов
/ 16 декабря 2011

Здравствуйте. Я пытаюсь выполнить запрос к моей таблице базы данных "shout_out", в то время как во время цикла у меня есть оператор if, чтобы проверить, было ли изменено значение столбца "vers_id "с no_reply. если он есть, я хочу выполнить другой запрос и получить все строки из таблицы shout_out_reply, которые имеют одинаковый столбец "vers_id ". Я пытаюсь сделать похожую выкладку в виде "стены" в фейсбуке. Кто-то делает комментарий, а кто-то может ответить на этот комментарий, причем ответ находится под первоначальным комментарием.

Я все время получаю сообщение об ошибке mysqli_query ($ dbc, $ query_shout_out_reply). но есть ответы с тем же "spok_id"

$query_shout_out = "SELECT * FROM shout_out WHERE sent_to = '$username' ";
$shout_out_query = mysqli_query($dbc, $query_shout_out);

if (mysqli_num_rows($shout_out_query) != 0) {
    while ($row = mysqli_fetch_array($shout_out_query)) {
        echo '<td class="shout_out_display" width="550">';
        echo $row['message'] . ' <br/><br/> From ' . $row['sent_by'] . ' at ' . $row['date_sent'];
        echo '</td></tr>';
        echo $row['convers_id'];
        if ($row['convers_id'] != "no_reply") {
            $query_shout_out_reply = "SELECT * FROM shout_out_reply WHERE convers_id = " . $row['convers_id'];
            $shout_out_reply_query = mysqli_query($dbc, $query_shout_out_reply);

            while ($reply_row = mysqli_fetch_array($shout_out_reply_query)) {
                echo ' <tr width="550"><td width="125" > &nbsp </td>';
                echo '<td width="425"  class="shout_out_reply_display">';
                echo $reply_row['message'] . '<br/><br/>Reply From ' . $reply_row['sent_by'] . ' at ' . $reply_row['date_sent'];
                echo '</td></tr>';
            }
        }

    }
}

Ответы [ 2 ]

1 голос
/ 16 декабря 2011
SELECT * FROM shout_out AS so LEFT JOIN shout_out_reply AS sor ON sor.convers_id = so.convers_id WHERE so.sent_to = '$username' AND so.convers_id != 'no_reply'

Ключевым моментом здесь является использование оператора SQL JOIN.Это даст вам результаты из обеих таблиц в одном утверждении.... тогда вам не нужно проходить цикл.сделать все эти запросы SQL.

0 голосов
/ 16 декабря 2011

Вы разрабатываете таблицы с такой структурой, которая позволит вам легко создавать объединения и сложные запросы. Прежде всего, вам необходимо понять, как работает соединение и когда его нужно использовать. проверьте Google на это.

...