Не удается получить все результаты из SQL-запроса

Я пытаюсь создать запрос, используя файлы cookie (избранные элементы)

<?php

    $favnum=0;
$FavList = 'WHERE ';
foreach ($_COOKIE as $name => $value) {
                   if ($value ==  '1'){
                    if($name != 'PHPSESSID'){
                        $FavList .= 'num = "'.$name.'" OR ';
            $favnum++;
                    }
               }
            }
$FavList = substr($FavList, 0,-3).' ';
$FavList = 'SELECT * FROM RETS '.$FavList; 
    ?>

Там, где FavNum несколько избыточен, он просто подсчитывает количество избранных, если есть 0 избранных, у меня может быть запасной вариант.

Запрос звучит следующим образом:

SELECT * FROM RETS WHERE 
num = "E2671855" OR 
num = "E2659557" OR 
num = "E2689932" OR 
num = "E2670962" OR 
num = "E2684630" OR 
num = "E2677355"

Как вы можете видеть, приведенный выше код представляет собой 6 чисел, соответствующих серийному номеру. Я могу скопировать и вставить этот запрос непосредственно в Navicat, и запрос вернет 6 результатов.

ПРОДОЛЖЕНИЕ:

<?php
$sql = $FavList;
    $results = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_array($results) or die(mysql_error());

while($row = mysql_fetch_array($results)){
    echo 'Things that make me go Hmmm....<br/>';
} ?>

Это возвращает следующее эхо:

Things that make me go Hmm....
Things that make me go Hmm....
Things that make me go Hmm....
Things that make me go Hmm....
Things that make me go Hmm....

Других частей в файле нет. Прямо сейчас я взял свой php-файл запроса и разделил его на эту конкретную часть файла только для устранения неполадок... Как видите, я получаю только 5 результатов. Редактор запросов получает 6 результатов.

Поэтому я провел некоторые тесты, я не знаю, поможет ли это сузить проблему...

while($row != mysql_fetch_array($results)) {echo '<script>alert(".$row['num'].")</script>';}

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


person Community    schedule 23.07.2013    source источник


Ответы (1)


Измените свой php-код на следующий:

<?php
    $sql = $FavList;
    $results = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_array($results) or die(mysql_error()); // this is the missing data
    echo 'Things that make me go Hmmm....<br/>'; // print the missing data

    while($row = mysql_fetch_array($results)){
        echo 'Things that make me go Hmmm....<br/>';
    } 
?>

Или вы можете просто сделать это:

<?php
    $sql = $FavList;
    $results = mysql_query($sql) or die(mysql_error());

    if (mysql_num_rows($result) > 0) {
        while($row = mysql_fetch_array($results)){ // all data will be fetch, including the missing data
            echo 'Things that make me go Hmmm....<br/>';
        } 
    }
?>

Это должно работать.

person Erdo Dirgagautama    schedule 23.07.2013
comment
Знаете... Я понятия не имею, почему просто копирование и вставка вашего кода сработало... Я потратил некоторое время, пытаясь найти разницу для дальнейшего использования. Я использовал нижний вариант, который вы мне дали, и вырезал оператор if... и это сработало? Хм... Что ж, большое спасибо.... Я также ценю скорость вашего ответа. - person ; 23.07.2013
comment
Добро пожаловать, Андрей. Если это поможет вашему любопытству, я обновлю свой ответ, чтобы указать недостающие данные. ;-) - person Erdo Dirgagautama; 23.07.2013