Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > функция mysql_fetch_array()


Автор: offline 6.7.2009, 10:39
Подскажите пожалуйста, где ошибка

Есть вот такой код.

$db = mysql_connect("localhost","user","pass");
mysql_select_db ("infoseute",$db);
$result = mysql_query("SELECT title FROM infoseite WHERE page='index'",$db);

$myrow = mysql_fetch_array($result);

при выполнении кода выдается ошибка

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in T:\home\virtual\mytest.webhop.net\index.php on line 5


как это исправить?

Автор: skyboy 6.7.2009, 10:53
значит, так.
необходимые шаги для исправления.
0. при написании постов для подсветки кода использовать тег [соde]
1. для определения ошибки использовать http://php.net/mysql_error
Код

$db = mysql_connect("localhost","user","pass");
mysql_select_db ("infoseute",$db);
$result = mysql_query("SELECT title FROM infoseite WHERE page='index'",$db);
if(!$result)
    die(mysql_error());
$myrow = mysql_fetch_array($result);

mysql_error покажет тебе ошибку выполнения запроса.
2. читать соседние топики на форуме, для перенятия полезных привычек и навыков(использование того же mysql_error)

Автор: offline 6.7.2009, 11:00
все понял, спасибо!!! вместо БД указал имя таблицы

Автор: Ипатьев 6.7.2009, 14:14
Строго говоря, die() является плохой практикой. Обрывать выполнение программы на середине не очень красиво. А такие паттерны приживаются и перекочевывают из учебного в производственный код.
Я бы предложил использовать функцию trigger_error(), которая, в зависимости от настроек отображения ошибок, выведет сообщение mysql либо на экран, либо в лог. А вместо die использовать другие средства управления программой. goto например %)

Автор: bars80080 6.7.2009, 14:19
Цитата(Ипатьев @  6.7.2009,  14:14 Найти цитируемый пост)
goto например %) 

goto? а оно разве в пхп существует?

Автор: lelik133 6.7.2009, 14:25
в 5.3 добавили http://ru2.php.net/manual/ru/control-structures.goto.php
но пользоваться ей дурной тон имхо

Автор: bars80080 6.7.2009, 14:41
угу, а прям в документации такая иллюстрация:

user posted image

Автор: skyboy 6.7.2009, 14:57
Цитата(Ипатьев @  6.7.2009,  13:14 Найти цитируемый пост)
Строго говоря, die() является плохой практикой. 

даже "нестрого говоря", die, выводящий информацию о проблеме пользователю и не доносящий информацию разработчику - вещь вредная и совершенно ненужная.
но как по мне, поэтапно проще усваивается: сначала выясняем, как получить отладочную информацию, а потом уже - когда возникнет необходимость - выясняем, как эту информацию скрыть от пользователя и сохранить для разработчика.
а начал бы про trigger_error говорить, а у вопрошающего в конфиге display_errors 0 - и все, надо объяснять, что это не рекомендация лагает, а ещё и конфиг править надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)