Mysql выдает ошибку запроса, но завершает запрос просто отлично - почему? - PullRequest
0 голосов
/ 14 ноября 2008

Я получаю

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result 
resource in *filename* on line 81

Во время выполнения запроса для построения диаграммы. Запрос получает данные из базы данных mysql и использует их для построения диаграммы.

Обычно я получаю эту ошибку и иду к коду и обнаруживаю, где я облажался, исправляю ее и продолжаю. Сложность этой проблемы заключается в том, что запрос фактически выполняется, а диаграмма строится и отображается точно. Почему мой сервер (localhost на xampp) сообщает мне, что результат запроса плохой, когда он может нормально использовать ресурс?

Вот полный запрос:

$chart=array();
    $roll=array();
    //select used terms
    $rosh=mysql_query("select distinct term from search_terms");

    while($roshrow=mysql_fetch_assoc($rosh)){
        extract($roshrow);
            $roll[]=$term;
        }

        //select term_number for each term
        foreach($roll as $sterm){
            $termarray=array();
                  **//following is line 81**
            $bashq="select term_number from search_terms where term ='$sterm'";
            $bash=mysql_query($bashq);
            while($brow=mysql_fetch_assoc($bash)){
                extract($brow);
                //put results into array to sum
                $termarray[]=$term_number;
            }
            $termsum=array_sum($termarray);

        //put term=>number array for chart script
            $chart[$sterm]=$termsum;

        }
        //sort array so high numbers at beginning
        arsort($chart);

        //slice top 10 terms
        $chart=array_slice($chart,0,10); 

Ответы [ 2 ]

2 голосов
/ 14 ноября 2008

Сделайте это:

$rosh=mysql_query("select distinct term from search_terms")
  or die("Error with query: " . mysql_error());

и это:

$bash=mysql_query($bashq)
  or die("Error with query: " . mysql_error();

Это скажет вам, когда это не удастся. Тем не менее, вы правы, вы получаете это сообщение, потому что mysql_query возвратил «false» и не является допустимым ресурсом результата.

1 голос
/ 14 ноября 2008

Поскольку ваши запросы в цикле, один из терминов не обрабатывается (возможно, потому что search_terms пропускает строки для этого конкретного поворота. Это странно, так как вы запрашиваете ту же таблицу.

Однако, поскольку это предупреждение, а не фатальная ошибка, оно все равно будет продолжаться.

В любом случае, это похоже на неправильный способ получения ваших данных, вы, вероятно, можете сделать один запрос, адекватную сортировку (ORDER BY) непосредственно на сервере SQL, GROUP BY и SUM () для получения суммы ваших условий .

Вместо этого вы должны прочитать свой SQL:)


SELECT term, SUM(term_number) as term_sum
FROM search_terms 
GROUP BY terms 
ORDER BY term_sum DESC
LIMIT 10

, затем просто скопируйте его в свою хеш-таблицу, и он должен быть уже отсортирован, а также ограничено 10 записями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...