Палец вверх 0
Перевод
Перевод

Query не получает все mysql_fetch_assocs

Может кто-нибудь сказать мне, почему следующий фрагмент кода получает только все изображения в запросе, кроме последнего?

    $userquery  = mysql_query("SELECT * FROM acceptedfriends WHERE    profilename='$profilename' ORDER BY RAND() LIMIT 4");
    while ($userrun = mysql_fetch_assoc($userquery))
    {
        $users = $userrun['username'];
        $imagequery  = mysql_query("SELECT * FROM users2 WHERE username='$users'");
        while ($imagefetch = mysql_fetch_assoc($imagequery))
        {
            $location = $imagefetch['imagelocation'];
            $image = "<img src='$location' width='60' height='40'>";
            if ($profilename==$username)
            {
                echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr>    <td>'.$image.'</td><td><div style="margin-bottom:5px;"><a    href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></div><div><a href="http://www.pearlsquirrel.com/conversation.php/'.$users.'" style="text-decoration:underline;" target="_blank"><div style="font-size:.7em";>Click to enter a conversation.</div></a></div></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>';
            }
            else
            {
                echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>';
            }
        }
    }

это

$image = "<img src='$location' width='60' height='40'>"; 

не получает последнее изображение в запросе. Я потратил около часа, пытаясь решить эту проблему, и понятия не имею. Любая помощь будет оценена.

Упрощенный код с той же ошибкой

    $userquery  = mysql_query("SELECT * FROM acceptedfriends WHERE     profilename='$profilename' ORDER BY id DESC LIMIT 6");
    while ($userrun = mysql_fetch_assoc($userquery))
    {
        $users = $userrun['username'];
        $location = $userrun['imagelocation'];
        $image = "<img src='$location' style='width:60px; height:40px;'>";
        if ($profilename==$username)
        {
            echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><div style="margin-bottom:5px;"><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></div><div><a href="http://www.pearlsquirrel.com/conversation.php/'.$pageusers.'" style="text-decoration:underline;" target="_blank"><div style="font-size:.7em";>Click to enter a conversation.</div></a></div></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>';
        }
        else
        {
            echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>';
        }
    }
php
задан Eggo 13 янв. 2012 г., 6:22:14
источник

2 ответа

Решение 3
Перевод
Перевод

Что происходит, когда вы запускаете print_r (mysql_fetch_assoc ($ userquery)); на обоих выбранных утверждениях? Вы видите данные в массиве? Я предполагаю, что вы делаете LIMIT 4 специально? Обычно я не запускаю цикл while внутри другого, вместо этого вы можете попробовать это:

$userquery  = mysql_query("SELECT * FROM acceptedfriends WHERE profilename='$profilename' ORDER BY RAND() LIMIT 4");

while ($userrun = mysql_fetch_assoc($userquery)) {
    $userArray[] = $userrun;
}

print_r($userArray);
echo '<br /><br />';

foreach ($userArray as $userValue) {
    $users = $userValue['username'];
    $imagequery  = mysql_query('SELECT * FROM users2 WHERE username="'.$users.'"');
    while ($imagefetch = mysql_fetch_assoc($imagequery)) {
        //echo out variables from the above select to make sure you're getting them
        $location = $imagefetch['imagelocation'];
        $image = "<img src='$location' width='60' height='40' />";
        if ($profilename==$username) {
            echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr>    <td>'.$image.'</td><td><div style="margin-bottom:5px;"><a    href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></div><div><a href="http://www.pearlsquirrel.com/conversation.php/'.$users.'" style="text-decoration:underline;" target="_blank"><div style="font-size:.7em";>Click to enter a conversation.</div></a></div></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>';
        } else {
            echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>';
        }
    }
}

Обязательно отлаживайте, проверяя, что ваши значения существуют при запросе скрипта. Надеюсь это поможет

ответ дан Jeff Wooden 13 янв. 2012 г., 6:47:34
источник
Палец вверх 0
Перевод
Перевод

Ошибка была не в том куске кода, а в том, что раньше на странице было разделение, где я забыл завершить '.

ответ дан Eggo 14 янв. 2012 г., 0:00:16
источник