Forum Webscript.Ru

Программирование => PHP => Тема начата: Rodent от 24 Марта 2006, 20:26:15

Название: Ошибка в запросе (вывод данных)
Отправлено: Rodent от 24 Марта 2006, 20:26:15
Всем Доброе время суток.

В корневой директории на хостинге имеется файл error.php, в котором есть вот такая строчка:
-----
[20-Mar-2006 23:49:53] PHP Warning:  mysql_num_rows(): supplied argument is not a valid MySQL result resource /weare/index.php on
line 27
-----

26-28 строчка

----
26 $news=mysql_query("select * from we_topics where forum_id=\'5\' order by tid desc limit $from,$maxmess");   
27 for ($i=0; $i28   $n=mysql_fetch_array($news);
-----

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


Мне подсказали, что в строчке

for ($i=0; $i
ошибка может быть, если подоваемые данные не являются mysql result resource, они у вас и не являются, они
являются только query.

Но что это означает я не понял...
Объясните мне бестолковому что ЭТО?
Название: Ошибка в запросе (вывод данных)
Отправлено: for_i_0 от 24 Марта 2006, 21:47:57
$news=mysql_query("select * from we_topics where forum_id=\'5\' order by tid desc limit $from,$maxmess");

1. перепиши:
$news=mysql_query("select * from we_topics where forum_id=\'5\' order by tid desc limit $from,$maxmess") or die("Error" . mysql_error());

и если выдаст ошибку выпиши ее сюда.

2. for ($i=0; $iзачем тебе данные поналобились выводить внутри цикла ?

чем не устраивает:

while($n = mysql_fetch_array($news)){

}
Название: Ошибка в запросе (вывод данных)
Отправлено: Rodent от 24 Марта 2006, 22:38:37
for_i_0
Добавил конструкцию  or die("Error" . mysql_error());
никаких ошибок не последовало. посмотрим, что напишется в файле error_php....
пока ничего....

Кстати, у меня возник вопрос по поводу использования операторов цикла
что лучше использовать и в каких случаях
for
foreach
while
???
Название: Ошибка в запросе (вывод данных)
Отправлено: andymc от 24 Марта 2006, 23:43:28
100% - ошибка при запросе $news=mysql_query. Почему то он не работает и не даёт результат. Почему?
1. Мб не существует каких-то полей, которые названы в запросе.
2. Скорее всего надо проверить переменные $from,$maxmess. выведи их через echo и посмотри - мб там ошибка, или они пустые, или являются строчными.
Может, limit выходит за вообще возможный предел количества строк в таблице.
3. И ещё.... Перед вызовом mysql_query у тебя в коде дб выбор базы данных mysql_db_query. Без него нихрена не сработает. Сам неоднократно трах-ся с этим, пока не понял что к чему.

Вывод - смотри переменные $from,$maxmess
Название: Ошибка в запросе (вывод данных)
Отправлено: for_i_0 от 25 Марта 2006, 00:09:35
Rodent
в случае с выборкой данных из БД использовать while выигрываешь на пересчете.

for - используй где без пересчета необойтись.

foreach - очень удобен для массивов.

Раз все чисто:
ИЛИ данные не соответсвуют условию WHERE
ИЛИ или $maxmess = 0; именно 0 а не \'\' и не undefined.
Название: Ошибка в запросе (вывод данных)
Отправлено: for_i_0 от 25 Марта 2006, 00:11:59
andymc
Не уверен - не пиши!
1. Выводится ошибка
2. Выводится ошибка
3. Выводится ошибка
Название: Ошибка в запросе (вывод данных)
Отправлено: andymc от 25 Марта 2006, 00:28:08
Я на своей шкуре знаю и видел, что такое
mysql_num_rows(): supplied argument is not a valid MySQL result resource /weare/index.php on line 27
Проблема в запросе или в переменных. Мы не знаем что там было до, поэтому трудно ответить.

А то, что возникает ошибка - это понятно.
Ошибки - это я вижу в 50% случаев тестирования с error_reporting[0]
Название: Ошибка в запросе (вывод данных)
Отправлено: for_i_0 от 25 Марта 2006, 13:48:01
Цитировать
andymc:
А то, что возникает ошибка - это понятно.


именно or die(mysql_error()) - выводит. А он говорит что ошибки не последовало!

Цитировать
andymc:
Ошибки - это я вижу в 50% случаев тестирования с error_reporting[0]


[OFF]ИМХО для ловли ошибок, не требуется столько внимания, сколько умения пользыватся error handling functions. Думаю ты и без меня знаешь что их в PHP предостаточно. [/OFF]
Название: Ошибка в запросе (вывод данных)
Отправлено: andymc от 25 Марта 2006, 14:58:30
for_i_0
Цитировать
for_i_0:
ИМХО для ловли ошибок, не требуется столько внимания, сколько умения пользыватся error handling functions. Думаю ты и без меня знаешь что их в PHP предостаточно.

Знаю, читал недавно, но всё чё-то пока не пойму надобности в них - ошибки ведь и так выводятся...