2010-09-01 34 views
52

Mögliche Duplizieren:
Reference - What does this symbol mean in PHP?Was bedeutet @ in PHP?

Ich habe mich gefragt, was @ bedeutet in der Sprache PHP. Ich habe Leute gesehen mit

$connect = @mysql_query('sql query here'); 

Nicht sicher warum. Könnte mir jemand das erklären?

+6

es ist eine schlechte, schlechte Sache. Benutze es nie und eliminiere jeden, den du findest. –

+5

Sag nicht "nie". Ich kann an ein bestimmtes Beispiel mit ldap denken, wenn ich die Anmeldeinformationen eines Benutzers teste. Wenn die Anmeldedaten fehlschlagen, wird ein Fehler ausgegeben und kann nicht mit try/catch abgefangen werden. Das einzige, was Sie tun können, ist das Ergebnis zu testen. Während ich normalerweise mit Ihnen einverstanden bin, gibt es Ausnahmen. – Brad

Antwort

52

Die @ operator PHP sagt Fehlermeldungen zu unterdrücken, so dass sie nicht angezeigt.

Zum Beispiel mit:

$result = mysql_query("this is an invalid query"); 

in einer Verwarnung führen würde, dass gezeigt wird, die besagt, dass die MySQL-Abfrage ungültig ist, während

$result = @mysql_query("this is still an invalid query"); 

wollte nicht.

Beachten Sie jedoch, dass dies eine sehr schlechte Programmierpraxis ist, da es den Fehler nicht verschwinden lässt, es nur versteckt und das Debuggen um ein Vielfaches schlimmer macht, da Sie nicht sehen können, was eigentlich mit Ihrem Code nicht stimmt .

Statt @ verwenden, sollten Sie error_reporting und display_errors nur display_errors in php.ini

+0

Gute Verwendung der tatsächlichen Beispiele, danke für diese Antwort. – NateDSaint

+0

akzeptierte Antwort für sehr detaillierte Erklärung ... – FlyingCat

+11

Eine Anmerkung. ** Nie ** deaktivieren 'error_reporting'. Sie nehmen diese Einstellung falsch. display_errors ist eine, die Sie in diesem Fall benötigen. –

1

Die @ ist eine Möglichkeit zu sagen, dass Sie keine Fehlermeldungen drucken möchten. Es ist eine schlechte Übung, weil Sie möglicherweise einen Fehler haben und es nie sehen, weil Sie es gerade "versteckt" haben.

PHP unterstützt einen Fehlerkontrolloperator: das At-Zeichen (@). Wenn sie einem Ausdruck in PHP vorangestellt werden, werden alle Fehlermeldungen, die von diesem Ausdruck erzeugt werden könnten, ignoriert.


Ressourcen:

0

deaktivieren @ Operator = Gibt an, dass, wenn es irgendeine Art von Fehler ist auftreten, dann zeigt die Nachricht nicht in dem Browser des Benutzers . Es gibt Leute, die das testen und den Unterschied nicht sehen, selbst wenn sie das @ setzen oder nicht, sie sehen immer noch keinen Fehler im Browser, naja, nur um hinzuzufügen, der Grund, warum dies geschieht, ist wegen der Einstellung in der php.ini-Datei für die Fehlerausgabe ist ausgeschaltet.

Verschiedene Hosting-Unternehmen haben unterschiedliche Einstellungen, um sicherzustellen, dass Sie keine hässlichen Skriptfehler für die Benutzer oder Hacker sehen (um einen Hinweis darauf zu geben, Ihre Website zu infiltrieren), können Sie immer den @ -Operator verwenden .

Hoffe diese Hilfe.