Подтвердить что ты не робот

@mysql_connect и mysql_connect

У меня нет проблем с подключением к базе данных с использованием PHP, однако в некоторых сценариях, которые я тестировал, я видел небольшую разницу в команде connect.

В чем разница между @mysql_connect и mysql_connect?

Я никогда не использовал символ @ при написании своего собственного script, поэтому просто задавался вопросом, послужило ли оно цели.

Заранее спасибо

4b9b3361

Ответ 1

Символ @ перед функцией блокирует его. Смысл, вы не получите никаких сообщений об ошибках при его выполнении, даже если это не удается. Поэтому я предлагаю: не использовать его

Кроме того, как сказал @AlexanderLarikov, больше не используйте mysql_*, сообщество начало обесценить эту функцию.

Ответ 2

Это/a оператор контроля ошибок. Это просто позволяет вам подавить ошибку.

Я бы предположил, что вы опустите его в своем коде.

Из документации:

В настоящее время префикс оператора ошибки @@даже отключается сообщение об ошибках для критических ошибок, которые прервут scriptвыполнение. Среди прочего, это означает, что если вы используете "@" для подавлять ошибки от определенной функции, и либо она недоступна или был опечатан, script умрет прямо там без указание о том, почему.

Ответ 3

Это механизм подавления ошибок. Итак, скажем, была ошибка при попытке подключения, PHP молча игнорировал бы ее, а не отображал/записывал ее (в зависимости от ваших настроек).

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

Ответ 5

Если вы не используете какой-либо вариант, например:

if ("I'm just making test on my srv") {
   error_reporting(E_ALL);
} else {
   error_reporting(0);
}

Тогда это может быть рекомендовано для этой ситуации;

$conn = @mysql_connect(...);
if ($conn === false) {
   // handle error
}

Or;

@mysql_connect(...) or die("Could not connect to ...");

Итак, @ подавляет ошибку, если она существует в строке "где используется подавляемая функция".

//Подавляемый? Да, поскольку вы не можете применять функции @ to die, exit, eval..., если это структурные функции.