@mysql_connect и mysql_connect
У меня нет проблем с подключением к базе данных с использованием PHP, однако в некоторых сценариях, которые я тестировал, я видел небольшую разницу в команде connect.
В чем разница между @mysql_connect
и mysql_connect
?
Я никогда не использовал символ @
при написании своего собственного script, поэтому просто задавался вопросом, послужило ли оно цели.
Заранее спасибо
Ответы
Ответ 1
Символ @
перед функцией блокирует его. Смысл, вы не получите никаких сообщений об ошибках при его выполнении, даже если это не удается. Поэтому я предлагаю: не использовать его
Кроме того, как сказал @AlexanderLarikov, больше не используйте mysql_*
, сообщество начало обесценить эту функцию.
Ответ 2
Это/a оператор контроля ошибок. Это просто позволяет вам подавить ошибку.
Я бы предположил, что вы опустите его в своем коде.
Из документации:
В настоящее время префикс оператора ошибки @@даже отключается сообщение об ошибках для критических ошибок, которые прервут scriptвыполнение. Среди прочего, это означает, что если вы используете "@" для подавлять ошибки от определенной функции, и либо она недоступна или был опечатан, script умрет прямо там без указание о том, почему.
Ответ 3
Это механизм подавления ошибок. Итак, скажем, была ошибка при попытке подключения, PHP молча игнорировал бы ее, а не отображал/записывал ее (в зависимости от ваших настроек).
Я лично считаю плохую практику использовать это, так как, на мой взгляд, вы должны написать свой код для обработки ошибок, а не просто отбрасывать их молча.
Ответ 4
Предупреждает @supresses http://php.net/manual/en/language.operators.errorcontrol.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
..., если это структурные функции.