Forum Webscript.Ru
Программирование => PHP => Тема начата: 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.
Но что это означает я не понял...
Объясните мне бестолковому что ЭТО?
-
$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)){
}
-
for_i_0
Добавил конструкцию or die("Error" . mysql_error());
никаких ошибок не последовало. посмотрим, что напишется в файле error_php....
пока ничего....
Кстати, у меня возник вопрос по поводу использования операторов цикла
что лучше использовать и в каких случаях
for
foreach
while
???
-
100% - ошибка при запросе $news=mysql_query. Почему то он не работает и не даёт результат. Почему?
1. Мб не существует каких-то полей, которые названы в запросе.
2. Скорее всего надо проверить переменные $from,$maxmess. выведи их через echo и посмотри - мб там ошибка, или они пустые, или являются строчными.
Может, limit выходит за вообще возможный предел количества строк в таблице.
3. И ещё.... Перед вызовом mysql_query у тебя в коде дб выбор базы данных mysql_db_query. Без него нихрена не сработает. Сам неоднократно трах-ся с этим, пока не понял что к чему.
Вывод - смотри переменные $from,$maxmess
-
Rodent
в случае с выборкой данных из БД использовать while выигрываешь на пересчете.
for - используй где без пересчета необойтись.
foreach - очень удобен для массивов.
Раз все чисто:
ИЛИ данные не соответсвуют условию WHERE
ИЛИ или $maxmess = 0; именно 0 а не \'\' и не undefined.
-
andymc
Не уверен - не пиши!
1. Выводится ошибка
2. Выводится ошибка
3. Выводится ошибка
-
Я на своей шкуре знаю и видел, что такое
mysql_num_rows(): supplied argument is not a valid MySQL result resource /weare/index.php on line 27
Проблема в запросе или в переменных. Мы не знаем что там было до, поэтому трудно ответить.
А то, что возникает ошибка - это понятно.
Ошибки - это я вижу в 50% случаев тестирования с error_reporting[0]
-
andymc:
А то, что возникает ошибка - это понятно.
именно or die(mysql_error()) - выводит. А он говорит что ошибки не последовало!
andymc:
Ошибки - это я вижу в 50% случаев тестирования с error_reporting[0]
[OFF]ИМХО для ловли ошибок, не требуется столько внимания, сколько умения пользыватся error handling functions. Думаю ты и без меня знаешь что их в PHP предостаточно. [/OFF]
-
for_i_0
for_i_0:
ИМХО для ловли ошибок, не требуется столько внимания, сколько умения пользыватся error handling functions. Думаю ты и без меня знаешь что их в PHP предостаточно.
Знаю, читал недавно, но всё чё-то пока не пойму надобности в них - ошибки ведь и так выводятся...