Автор Тема: Обработка неуспешного запроса к БД  (Прочитано 4057 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tepncuxopa

  • Муза форума
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 386
  • +0/-0
  • 1
    • Просмотр профиля
Обработка неуспешного запроса к БД
« : 28 Февраля 2002, 17:05:42 »
Мне нужно вывести сообщение в случае неуспешного запроса к базе данных. Деляю я это так:

$select="SELECT * FROM glossary WHERE word LIKE \'$word\'";
if (mysql_query($select)==0) {
 $query=mysql_query($select);
 $result=mysql_fetch_array($query);
 $title=$result[\'word\'];
 $text=$result[\'value\'];}
else {
 $title="

Данного термина пока нет в словаре. В ближайшее время он будет добавлен.";
 $text=\'\';}

Но что-то оно не работает :(

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Обработка неуспешного запроса к БД
« Ответ #1 : 28 Февраля 2002, 17:51:35 »
Если у тебя неуспешный запрос к базе, то mysql_query() вернет тебе false от этого и крутись

mysql_query() returns TRUE on success and FALSE on error. A non-FALSE return value means that the query was legal and could be executed by the server. It does not indicate anything about the number of rows affected or returned. It is perfectly possible for a query to succeed but affect no rows or return no rows.
На Машине Тьюринга далеко не уедешь.

Оффлайн Tepncuxopa

  • Муза форума
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 386
  • +0/-0
  • 1
    • Просмотр профиля
Обработка неуспешного запроса к БД
« Ответ #2 : 28 Февраля 2002, 18:23:55 »
Вита, при успешном запросе функция mysql_query возвращает 0. Ненулевой результат указывает на ошибку, которую можно получить обратившись к mysql_error.
Конструкции с true и false я уже пробовала и так, и сяк, и в других разных позах, типа if (mysql_query($select)) или if (!mysql_query($select)).

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Обработка неуспешного запроса к БД
« Ответ #3 : 28 Февраля 2002, 18:55:13 »
Проверь через mysql_num_rows eq 0
AS IS...

Оффлайн Tepncuxopa

  • Муза форума
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 386
  • +0/-0
  • 1
    • Просмотр профиля
Обработка неуспешного запроса к БД
« Ответ #4 : 28 Февраля 2002, 18:59:54 »
Заработало, только наверное это идеологически не правильный способ. Я сделала так:

$select="SELECT * FROM glossary WHERE word LIKE \'$word\'";
$query=mysql_query($select);
$result=mysql_fetch_array($query);
if ($result[\'word\']!=\'\') {
 $title=$result[\'word\'];
 $text=$result[\'value\'];}
else {
 $title="

Данного термина пока нет в словаре. В ближайшее время он будет добавлен.";
 $text=\'\';}

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Обработка неуспешного запроса к БД
« Ответ #5 : 28 Февраля 2002, 19:11:05 »
Цитировать
Заработало, только наверное это идеологически не правильный способ. Я сделала так


так тебе не на успешность обращения к базе надо проверять, а на колличество полученых строк.
На Машине Тьюринга далеко не уедешь.

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
Обработка неуспешного запроса к БД
« Ответ #6 : 28 Февраля 2002, 19:49:05 »

$select
="SELECT * FROM glossary WHERE word LIKE \'$word\'"
$qc  mysql_query($select) ;

if(!
$qc) {
   print \
'ошибка!!!\';
   die();
}
if(@mysql_num_rows($qc) == 0) {
    $title = "

Данного термина пока нет в словаре. В ближайшее время он будет добавлен.";
} else {
    $rc=mysql_fetch_array($qc); 
    $title=$rc[\'word\']; 
    $text=$rc[\'value\'];
}
Евгений aka Razor,

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Обработка неуспешного запроса к БД
« Ответ #7 : 28 Февраля 2002, 22:49:31 »
А почему бы не использовать для решения этой задачи mysql_error() и mysql_errno()?
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
есессно можно, даже нужно :)
« Ответ #8 : 28 Февраля 2002, 23:10:41 »
просто задача темы в том, чтобы узнать, был ли результат или нет (т.е. успешный запрос)
Евгений aka Razor,

Оффлайн Tepncuxopa

  • Муза форума
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 386
  • +0/-0
  • 1
    • Просмотр профиля
Обработка неуспешного запроса к БД
« Ответ #9 : 01 Марта 2002, 14:25:27 »
2Britva: А в каком случае может выполниться условие:

if(!$qc) {
   print \'ошибка!!!\';
   die();
}

Я так понимаю, что если запрос был успешным, то в $result=mysql_fetch_array($select) что-то запишется, в противном случае она будет пустая. Поскольку поле word -- primary key, то по запросу я получу либо одну строку из таблицы, либо вообще ничего не получу.

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
Обработка неуспешного запроса к БД
« Ответ #10 : 01 Марта 2002, 15:03:09 »
Цитировать
А в каком случае может выполниться условие:
if(!$qc) {
print \'ошибка!!!\';
die();
}

когда таблица не существует/нет коннекта к БД/...

сначала лучше проверять на кол-во полученных записей (mysql_num_rows) а потом уже выбирать из их списка через mysql_fetch_array
Евгений aka Razor,

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28