-2

タイトルで申し訳ありませんが、具体的には言えません (英語は私の母国語ではありません)。ここに私の問題があります: 式として mysql_query() を使用した 2 つの while ループがあります (非推奨であることはわかっていますが、使用する必要があります)。最初のループは問題ありませんが、2 番目のループは不定ループで、その理由はわかりません。phpMyAdmin で mysql クエリをテストしましたが、問題ありません。これが私のコードです:

while($czat = mysql_fetch_array($data))
{
$user = mysql_fetch_array(mysql_query("SELECT * FROM `tablicacms_users` WHERE `id` = \"{$czat['user_id']}\""));


$feed = $feed.'

<div class="container dropshadow">
<div class="sidebar">
    <img class="avatar" src="../'.$user['avatar'].'" />
</div>
<div class="container2">
        <div class="profile">
            <div class="username">'.$user['user'].'</div>
            <div class="datetime">'.$czat['timestamp'].'</div>
        </div>
        <div class="content">
            '.$czat['message'].'
        </div>
        <div class="answer">odpowiedz<div style="display:none;">'.$czat['id'].'</div></div>
</div>
</div>

<br />';

while($row = mysql_fetch_array(mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20")))
{
    $reply_user = mysql_fetch_array(mysql_query("SELECT * FROM `tablicacms_users` WHERE `id` = \"{$row['user_id']}\""));
    $feed = $feed . '
        <div class="odpowiedzi">
            <div class="sidebar3"><img src="../'.$reply_user['avatar'].'" /></div>
            <div class="container3">
                <div class="info">'.$reply_user['user'].'</div>
                <div class="timestamp">'.$row['timestamp'].'</div>
            </div>
            <div class="reply">'.$row['message'].'</div>
        </div>
    ';
}

$feed = $feed . '
<div class="form_odpowiedz" id="'.$czat['id'].'">   
    <img src="../'.$user['avatar'].'" class="avatar2" />
    <form action="" name="odpowiedz"">
        <input type="textbox" name="text" class="text_odpowiedz" id="msg_reply_'.$czat['id'].'" />
        <input type="hidden" name="answer_id" value="'.$czat['id'].'" class="msg_id" />
        <input type="submit" value="Odpowiedz" style="heigth: 30px;" class="odpowiedz" alt="'.$czat['id'].'" />
    </form>
    <br />
</div>


';}

あなたが私を助けてくれることを願っています。

4

4 に答える 4

2

2 番目の while ループからクエリ ステートメントを削除します。あなたの声明では

while($row = mysql_fetch_array(mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20")))

あなたがしているのは、while ループで毎回同じステートメントを照会することです。これにより、無限ループが発生しました。
次のようにします:-

$res = mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20")
while($row = mysql_fetch_array($res))
{
 //you stuff goes here
 }

これはうまくいきます。試して。

于 2013-10-12T08:41:34.900 に答える
1

変化する

while($row = mysql_fetch_array(mysql_query("SELECT * FROMczat2WHERE返信= \"{$czat['id']}\" ORDER BYIDDESC LIMIT 20")))

に、

$res = mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20");
while($row = mysql_fetch_array($res)) { /* your logic here */}
于 2013-10-12T08:38:25.500 に答える
1

これは、ループの繰り返しごとにクエリを再実行しているためだと思います。

それ以外の :

while($row = mysql_fetch_array(mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20")))
{

行う

$result = mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20");
while($row = mysql_fetch_array($result)) {
于 2013-10-12T08:38:46.217 に答える
1

これ:

mysql_fetch_array(mysql_query("SELECT * FROM `czat2` WHERE `reply` = \"{$czat['id']}\" ORDER BY `id` DESC LIMIT 20"))

何度も実行しています。同じクエリを何度も実行し、最初の結果を何度も取得しています。クエリを 1 回実行してから、結果からループでフェッチするだけです。

于 2013-10-12T08:37:38.423 に答える