Forum Webscript.Ru
Программирование => PHP => Тема начата: Tepncuxopa от 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=\'\';}
Но что-то оно не работает :(
-
Если у тебя неуспешный запрос к базе, то 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.
-
Вита, при успешном запросе функция mysql_query возвращает 0. Ненулевой результат указывает на ошибку, которую можно получить обратившись к mysql_error.
Конструкции с true и false я уже пробовала и так, и сяк, и в других разных позах, типа if (mysql_query($select)) или if (!mysql_query($select)).
-
Проверь через mysql_num_rows eq 0
-
Заработало, только наверное это идеологически не правильный способ. Я сделала так:
$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=\'\';}
-
Заработало, только наверное это идеологически не правильный способ. Я сделала так
так тебе не на успешность обращения к базе надо проверять, а на колличество полученых строк.
-
$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\'];
}
-
А почему бы не использовать для решения этой задачи mysql_error() и mysql_errno()?
-
просто задача темы в том, чтобы узнать, был ли результат или нет (т.е. успешный запрос)
-
2Britva: А в каком случае может выполниться условие:
if(!$qc) {
print \'ошибка!!!\';
die();
}
Я так понимаю, что если запрос был успешным, то в $result=mysql_fetch_array($select) что-то запишется, в противном случае она будет пустая. Поскольку поле word -- primary key, то по запросу я получу либо одну строку из таблицы, либо вообще ничего не получу.
-
А в каком случае может выполниться условие:
if(!$qc) {
print \'ошибка!!!\';
die();
}
когда таблица не существует/нет коннекта к БД/...
сначала лучше проверять на кол-во полученных записей (mysql_num_rows) а потом уже выбирать из их списка через mysql_fetch_array