Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Что такое "@"?
 
 автор: maxam   (05.02.2011 в 16:20)   письмо автору
 
 

Зачем знак "@"?

Я иногда вижу его в чужих кодах, но не пойму зачем.

Например, была ситуация, когда при mysql_fetch_array высскакивала ошибка, а когда добавил @mysql_fetch_array - ошибка пропала. В чём дело?

  Ответить  
 
 автор: neadekvat   (05.02.2011 в 16:23)   письмо автору
 
   для: maxam   (05.02.2011 в 16:20)
 

@ - подавляет ошибки.

Редко когда действительно необходимо ее использовать - проводите прверку на ошибки - так ваш сценарий будет более гибким.

  Ответить  
 
 автор: cheops   (05.02.2011 в 16:31)   письмо автору
 
   для: maxam   (05.02.2011 в 16:20)
 

Этот символ подавляет вывод сообщений об ошибке. Иногда бывают ситуации - пусть лучше приложение не работает некоторое время, чем выводится какое-то сообщение. Однако, применительно к функции mysql_fetch_array() лучше штатно обрабатывать неправильное выполнение SQL-запроса: это не файл, который может быть куда-то случайно перемещен. Достаточно проверить состояние дескриптора результирующей таблицы и принять решение о дальнейших действиях, а не передавать неправильный дескриптор функции mysql_fetch_array()

  Ответить  
 
 автор: Maxam   (05.02.2011 в 17:04)   письмо автору
 
   для: cheops   (05.02.2011 в 16:31)
 

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

  Ответить  
 
 автор: neadekvat   (05.02.2011 в 17:07)   письмо автору
 
   для: Maxam   (05.02.2011 в 17:04)
 

Проверить то не на чем.. Но, по-моему, дескриптор не возвращает false, если в результате не нашлось ни одной строки. Т.е. и в mysql_fetch_* передается правильный дескриптор.

А что, если при отсутствии соответствующих строк в бд (т.е. нет результатов) применить, например mysql_num_rows?

  Ответить  
 
 автор: cheops   (05.02.2011 в 17:15)   письмо автору
 
   для: Maxam   (05.02.2011 в 17:04)
 

>Так вроде всякие проверки делаю, ошибки вообще быть не должно. Не понимаю, почему
>высскакивает. Но появляется заметил когда данных в искомой таблице нет.
А количество строк в результирующей таблице проверяете?
<?php
  
...
  
$res mysql_query($query);
  if(!
$res) exit("Ошибка - ".mysql_error());
  if(
mysql_num_rows($res))
  {
     while(
$result mysql_fetch_array($res))
     {
        ...
     }
  }
?>

  Ответить  
 
 автор: Maxam   (05.02.2011 в 18:18)   письмо автору
 
   для: cheops   (05.02.2011 в 17:15)
 

Вставил проверку:
if($mysql_query==true)
{
   while ...
}

и ошибка пропала.

  Ответить  
 
 автор: Maxam   (05.02.2011 в 18:19)   письмо автору
 
   для: Maxam   (05.02.2011 в 18:18)
 

На всякий случай добавил эту проверку везде. Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования