Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запрос к БД есть, результат есть, mysql_fetch_assoc возвращает FALSE
Форумы портала PHP.SU » » Если скрипт не работает » Запрос к БД есть, результат есть, mysql_fetch_assoc возвращает FALSE

Страниц (1): [1]
 

1. SkaN - 30 Июля, 2011 - 15:31:13 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $query = commentsQueries::getComments($article, $comments_page);
  2. if ($query != 'null') {
  3.         for ($i=0; $i<mysql_num_rows($query); $i++) {
  4.                 $comments_array = mysql_fetch_assoc($query);
  5.                 include 'styles/template/comment.php';
  6.         }
  7. }

Этот код должен делать запрос к методу, который возвращает записи из соответствующей таблицы. Метод точно возвращает, потому что mysql_num_rows($query) вернул положенную единицу. Однако $comments_array == FALSE и эта часть кода спокойно пропускается, скрипт выполняется дальше...
2. SkaN - 31 Июля, 2011 - 08:24:15 - перейти к сообщению
если этот привести к такому виду (учитывая то, что в силу обстоятельств только одна запись выводится из БД):
PHP:
скопировать код в буфер обмена
  1. $query = commentsQueries::getComments($article, $comments_page);
  2. $comments_array = mysql_fetch_assoc($query);
  3. include 'styles/template/comment.php';

то ничего не меняется...
а если довести количество записей до двух, то выводится только первая
хотя такой же код спокойно выводит записи из другой таблицы
3. kochan10 - 31 Июля, 2011 - 11:12:41 - перейти к сообщению
По мелочи посоветую mysql_num_rows($query) предварительно сохранить в переменной, иначе функция будет вызываться каждую итерацию, что не есть гуд.
А в случае, когда записей не одна, mysql_num_rows($query) возвращает точное количество записей?
4. SkaN - 31 Июля, 2011 - 11:28:34 - перейти к сообщению
kochan10 пишет:
По мелочи посоветую mysql_num_rows($query) предварительно сохранить в переменной

PHP:
скопировать код в буфер обмена
  1. $query = commentsQueries::getComments($article, $comments_page);
  2. $numrows = mysql_num_rows($query);
  3. if ($query != 'null') {
  4.         for ($i=0; $i<$numrows; $i++) {
  5.                 $comments_array = mysql_fetch_assoc($query);
  6.                 include 'styles/template/comment.php';
  7.         }
  8. }

результат тот же
kochan10 пишет:
А в случае, когда записей не одна, mysql_num_rows($query) возвращает точное количество записей?

да, выводит цифру 2
(Добавление)
метод, которым я данные запрашиваю, возвращает таким образом:
PHP:
скопировать код в буфер обмена
  1. if (mysql_fetch_assoc($query) != FALSE) return $query;
  2. else return 'null';

сейчас сообразил, что это может одну запись себе забирать. Если мне напишете, что возвращает MySQL, когда ни на что не натыкается, буду благодарен... А то я и NULL пробовал подставлять ($query != NULL) и FALSE, но они не подходят
(Добавление)
Растерялся
PHP:
скопировать код в буфер обмена
  1. if ($query) return $query;
  2. else return 'null';

теперь все норм...
(Добавление)
SkaN пишет:
Если мне напишете, что возвращает MySQL, когда ни на что не натыкается, буду благодарен... А то я и NULL пробовал подставлять ($query != NULL) и FALSE, но они не подходят

вот это все еще активно, а то не получается у меня вернуть 'null', а надо

 

Powered by ExBB FM 1.0 RC1