@mysql_connect y mysql_connect

No tengo problemas para conectarme a una base de datos usando PHP, sin embargo, en algunos scripts que he probado, he visto una pequeña diferencia en el comando de conexión.

¿Cuál es la diferencia entre @mysql_connect y mysql_connect ?

Nunca utilicé el símbolo @ cuando escribía mi propio guión, así que me preguntaba si cumplía un propósito.

Gracias por adelantado

El símbolo @ al frente de una función lo silencia. Es decir, no obtendrá ningún tipo de mensaje de error cuando lo ejecute, incluso si falla. Entonces sugiero: no lo use

Además, como dijo @AlexanderLarikov, ya no use mysql_* , la comunidad comenzó a depreciar esa función.

Es el / un operador de control de errores . Simplemente le permite suprimir el error.

Sugeriría que lo omitas en tu código.

De la documentación:

Actualmente, el prefijo de operador de control de errores “@” incluso deshabilitará el informe de errores críticos que terminarán la ejecución del script. Entre otras cosas, esto significa que si usa “@” para suprimir los errores de una determinada función y, o bien no está disponible o ha sido mal escrita, la secuencia de comandos morirá allí mismo sin ninguna indicación de por qué.

Eso es un mecanismo de supresión de errores. Entonces, digamos que hubo un error cuando trataste de conectarte, PHP lo ignoraría silenciosamente en lugar de mostrarlo / iniciar sesión (dependiendo de tu configuración).

Personalmente creo que es una mala práctica usar esto, ya que, en mi opinión, debes escribir tu código para manejar los errores, no solo descartarlos silenciosamente.

Las advertencias @ supresses http://php.net/manual/en/language.operators.errorcontrol.php lo usan con prudencia

Si no usas ninguna opción como esta;

 if ("Estoy haciendo una prueba en mi srv") {
    error_reporting (E_ALL);
 } else {
    error_reporting (0);
 }

Entonces, podría recomendarse para esta situación;

 $ conn = @mysql_connect (...);
 if ($ conn === falso) {
    // manejar el error
 }

 O;

 @mysql_connect (...) o die ("No se pudo conectar a ...");

Entonces, @ suprime el error si existe en la línea “donde se usa la función suprimible”.

// ¿Supresible? Sí, porque no puede aplicar las funciones @ to die, exit, eval … si se trata de funciones estructurales.