10
votes

@mysql_connect et mysql_connect

Je n'ai aucun problème à se connecter à une base de données à l'aide de PHP dans certains scripts que j'ai testés, j'ai vu une petite différence dans la commande Connect.

Quelle est la différence entre @mysql_connect et mysql_connect ?

Je n'ai jamais utilisé le symbole @ lorsque vous écrivez mon propre script, vous vous demandiez simplement s'il servait un but.

Merci d'avance


5 commentaires

@ est l'équivalent PHP de VB 'CODE> sur erreur CV Suivant E.G. "Qui se soucie de si l'univers vient d'exploser et de tout le monde de tout le monde. Prétendre tout va bien et continuer à tirer sur nous-mêmes au pied".


Si vous souhaitez supprimer des erreurs, vous devriez préférer aller de manière orientée objet et utiliser des mécanismes de traitance de try-capture des versions OO des fonctions: D


S'il vous plaît, n'utilisez pas mySQL _ * fonctions pour le nouveau code. Ils ne sont plus conservés et la communauté a commencé le processus de dépréciation . Voir le Boîte rouge ? Au lieu de cela, vous devriez apprendre sur Instruments préparés et utiliser soit PDO ou MySQLI . Si vous ne pouvez pas décider, Cet article aidera à choisir. Si vous souhaitez apprendre, Voici un bon tutoriel PDO .


Si vous avez besoin d'un symbole PHP Référence, essayez - Que signifie ce symbole dans Php?


@MANSEUK: Merci pour les informations et les références.


5 Réponses :


16
votes

Le symbole @ devant une fonction le silence. Signification, vous n'obtiendrez aucun type de messages d'erreur lorsque vous l'exécutez, même s'il échoue. Donc, je suggère: ne l'utilise pas

En plus de @AlexanderLarikov dit, n'utilisez plus MySQL _ * plus, la communauté a commencé à déprécier cette fonction.


5 commentaires

De plus, je peux suggérer: n'utilisez pas mySQL _ * fonctionne du tout depuis sa dépréciation


Aussi vrai, merci pour le commentaire ici.


Eh bien, ne l'utilise pas est un peu dur. Je dirais: Évitez, si possible. Dites que vous mettez à niveau sur PHP 5.4 et que vous avez défini votre INI sur une erreur stricte et une déclaration d'avertissement stricte, dans ce cas, vous pouvez utiliser @ pour supprimer un couple d'avertissements et nettoyer votre code progressivement, au lieu de patauger à travers toutes les erreurs en même temps. Dans ce cas mysql _ * émettra un avertissement de dépréciation, supprimez-les jusqu'à ce que vous soyez rond pour trier tout ce qui soit, puis les retournez pour voir si vous vous débarrassez tous (remplacez-les. eux par AOP)


@ALEXANDERLARIKOV: AHH Crap, j'aimerais avoir su que cela auparavant, j'ai maintenant beaucoup de mises à jour de faire. Merci pour l'info ;)


@Dainisabols: Merci pour la réponse. Je me demandais pourquoi certains de mes scripts ne fonctionnaient pas et ne recevaient aucune erreur.



2
votes

C'est le / un opérateur de contrôle d'erreur . Cela vous permet simplement de supprimer l'erreur.

Je suggérerais que vous omettez-le dans votre code.

de la documentation:

Actuellement, le préfixe de l'opérateur de contrôle d'erreur "@" devra même désactiver Rapport d'erreur pour des erreurs critiques qui termineront le script exécution. Entre autres choses, cela signifie que si vous utilisez "@" à Supprimer les erreurs d'une certaine fonction et c'est non disponible ou a été mis en erreur, le script mourra juste là sans indication de pourquoi.


0 commentaires

1
votes

C'est un mécanisme d'essais de suppression. Donc, dites qu'il y avait une erreur lorsque vous avez essayé de vous connecter, PHP l'ignorerait silencieusement plutôt que d'afficher / de l'enregistrer (en fonction de vos paramètres).

Je pense personnellement que la mauvaise pratique de l'utiliser, comme à mon avis, vous devez écrire votre code pour gérer les erreurs, non seulement les jeter silencieusement.


0 commentaires

0
votes

Les warnings @ Suppresses http://php.net/manual/fr/ language.operators.errorcontrol.php Utilisez-le judicieusement


0 commentaires

0
votes

Si vous n'utilisez aucune option comme celle-ci; xxx

alors, il pourrait être recommandé pour cette situation; xxx

Donc, @ supprime l'erreur s'il existe à la ligne "où la fonction suppressée est utilisée".

// suppressible? Oui, COS Vous ne pouvez pas appliquer @ à die, sortie, eval ... Fonctions si ce sont des fonctions structurelles.


0 commentaires