|
|
|
| В от такой фрагмент кода есть у меня:
<?
$q="SELECT * FROM $prefix"."on_line WHERE login=".$login['id'];
$r=mysql_query($q) or sql_err($q, __FILE__, __LINE__);
if(!$r) return;
if($r == NULL) return;
if(mysql_num_rows($r)<1) return;
if(!is_resource($r)) return;
while($on_line=mysql_fetch_assoc($r)){
|
Он периодически рушит мне всю страницу
сообщением:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/utils.inc on line 734
|
Которое, уже в свою очередь, создаёт проблему с отсылкой заголовков.
В чём тут может быть ошибка? | |
|
|
|
|
|
|
|
для: Eugene77
(01.04.2009 в 18:10)
| | вы написали в запросе WHERE login=".$login['id']; но если в логине присутсвуют нецифровые символы, то mysql считает это ошибкой т.к. нужно расставить кавычки вокруг логина:
<?
$q="SELECT * FROM $prefix"."on_line WHERE login='".$login['id'].'\'';
$r=mysql_query($q) or sql_err($q, __FILE__, __LINE__);
if(!$r) return;
if($r == NULL) return;
if(mysql_num_rows($r)<1) return;
if(!is_resource($r)) return;
while($on_line=mysql_fetch_assoc($r)){
|
| |
|
|
|
|
|
|
|
для: nikita2206
(01.04.2009 в 19:18)
| | Действительно, как я не подумал?!
Попробую исправить.
Хотя ошибки от MySQL я на этом участкекоданикогда не получал.
Именно mysql_fetch_assoc($r) почему-то упирается. | |
|
|
|
|
|
|
|
для: Eugene77
(01.04.2009 в 20:15)
| | всё правильно! если ошибка в sql запросе, то пхп выдает ее лишь на уровне сортировки(mysql_fetch*) массива | |
|
|
|
|
|
|
|
для: nikita2206
(01.04.2009 в 20:23)
| | Пока вроде работает.
Спасибо!
Хоть я и не понял, почему MySQL сама ошибку не выдаёт.
Обычно, если ошибка, то просто возвращает false вместо результата.
А тут что-то странное возвращается. | |
|
|
|
|
|
|
|
для: Eugene77
(02.04.2009 в 18:01)
| | >Хоть я и не понял, почему MySQL сама ошибку не выдаёт.
А как MySQL может выдать ошибку???
Просто MySQL выдает в качестве результата false, а PHP при сортировке в mysql_fetch... выбрасывает ошибку, поскольку не может обработать возвращенный базой данных результат, поскольку он представляет собой просто константу false. | |
|
|
|
|
|
|
|
для: Commander
(03.04.2009 в 06:15)
| | >>Хоть я и не понял, почему MySQL сама ошибку не выдаёт.
>
>А как MySQL может выдать ошибку???
>Просто MySQL выдает в качестве результата false, а PHP при сортировке в mysql_fetch... выбрасывает ошибку, поскольку не может обработать возвращенный базой данных результат, поскольку он представляет собой просто константу false.
Если так, то почему они одно из условий
<?
if(!$r) return;
if($r == NULL) return;
if(mysql_num_rows($r)<1) return;
if(!is_resource($r)) return;
|
не срабатывает? | |
|
|
|
|
автор: constanta (04.04.2009 в 02:57) |
|
|
для: Eugene77
(03.04.2009 в 14:35)
| | Потому что под маской. | |
|
|
|
|
|
|
|
для: constanta
(04.04.2009 в 02:57)
| | А где про эту маску почитать? | |
|
|
|
|
|
|
|
для: constanta
(04.04.2009 в 02:57)
| | Ау! Кто может про маску пояснить? | |
|
|
|
|
|
|
|
для: Eugene77
(08.04.2009 в 22:26)
| | потому что человек глупость сморозил.
А Вы до сих пор не привели пример запроса с таким странным поведением. | |
|
|
|
|
|
|
|
для: Trianon
(08.04.2009 в 22:28)
| | >потому что человек глупость сморозил.
>А Вы до сих пор не привели пример запроса с таким странным поведением.
Подскажите как его поймать. Ошибка возникает относительно редко.
Кстати, использование кавычек, как было подсказано, действительно устранило проблему. | |
|
|
|
|
|
|
|
для: Eugene77
(11.04.2009 в 18:30)
| | Не может быть, чтобы после этого:
if(!$r) return;
if($r == NULL) return;
if(mysql_num_rows($r)<1) return;
if(!is_resource($r)) return;
|
ошибка прошла дальше.
Быть может, В теле цикла
while($on_line=mysql_fetch_assoc($r)){
|
вы переопределяете $r при каком-то условии? | |
|
|
|
|
|
|
|
для: Лерк
(11.04.2009 в 18:39)
| | С какой бы стати тогда при добавлении кавычек ошибка ушла?
Но с другой стороны, сейчас посмотрел внимательней, такое переопределение в принципе может случиться, при какой-то накладке типа недозагрузки страницы или ещё чего-то в этом роде.
Попробую сейчас сочинить более надёжный алгоритм для этого отрезка кода.
Спасибо! | |
|
|
|