У меня нет проблем с подключением к базе данных с использованием PHP, однако в некоторых сценариях, которые я тестировал, я видел небольшую разницу в команде connect.
В чем разница между @mysql_connect
и mysql_connect
?
Я никогда не пользовался символом @
при написании собственного скрипта, так что просто задавался вопросом, послужило ли оно цели.
заранее спасибо
Символ @
перед функцией блокирует его. Смысл, вы не получите никаких сообщений об ошибках при его выполнении, даже если это не удается. Поэтому я предлагаю: не используйте его
Кроме того, как сказал @AlexanderLarikov, больше не используйте mysql_*
, сообщество начало обесценивать эту функцию.
Это оператор управления ошибкой / . Это просто позволяет вам подавить ошибку.
Я бы предложил, чтобы вы опустили его в своем коде.
Из документации:
В настоящее время префикс оператора ошибки «@» даже отключает отчет об ошибках для критических ошибок, которые прекратят выполнение скриптов. Между прочим, это означает, что если вы используете «@» для подавления ошибок от определенной функции, и либо она недоступна, либо была опечатана, скрипт будет умирать прямо там без указания относительно причины.
Это механизм подавления ошибок. Итак, скажем, при попытке подключения произошла ошибка, PHP молча игнорирует ее, а не отображает / регистрирует ее (в зависимости от ваших настроек).
Я лично считаю, что это плохая практика, чтобы использовать это, поскольку, на мой взгляд, вы должны написать свой код для обработки ошибок, а не просто отменить их.
@ Supresses warnings http://php.net/manual/en/language.operators.errorcontrol.php использует его с умом
Если не использовать какой-либо вариант, что-то вроде этого;
if («Я просто делаю тест на моем srv») { error_reporting (E_ALL); } else { error_reporting (0); }
Тогда это можно было бы рекомендовать для этой ситуации;
$ conn = @mysql_connect (...); if ($ conn === false) { // обрабатывать ошибку } Или; @mysql_connect (...) или die («Не удалось подключиться к ...»);
Таким образом, @
подавляет ошибку, если она существует в строке «где используется подавляемая функция».
// Подавляем? Да, потому что вы не можете применять @
чтобы die, exit, eval
… функции, если это структурные функции.