Bramburi J.: @ als Operator ?

Hallo !

Ich schlag mich (als Einsteiger) noch etwas mit mit den PHP-Grundlagen herum. In einem Script zur Mysql-Datenein- u. ausgabe fand ich das @-Zeichen vor einem Array als Operator. (...$link = @msql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);...) Ich hab zwei PHP-Bücher. In beiden ist es aufgelistet, aber in keinen erklärt.

Könnt mir da jemand weiterhelfen. Für die Experten hier, glaub ich ist das eine Kleinigkeit.

Besten Dank schon im Voraus.

Gruß Josi

  1. Ich schlag mich (als Einsteiger) noch etwas mit mit den PHP-Grundlagen herum.
    In einem Script zur Mysql-Datenein- u. ausgabe fand ich das @-Zeichen vor einem Array als Operator.

    Mit dem Klammeraffen unterdrückst Du Warnungen und Fehlermeldungen beim jeweiligen Befehl. Eine IMHO sehr unkluge Geschichte. Willst Du keine Meldungen in der Webseite, schalte besser "display_errors" aus und leite die Meldungen mittels "log_errors" an das Fehlerprotokoll weiter. Beide Einstellungen und wie man sie setzt sind im Kapitel "Konfiguration" erklärt: http://www.php.net/manual/de/configuration.php.

    Gruß,
      soenk.e

  2. Hi,

    (...$link = @msql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);...)
    Ich hab zwei PHP-Bücher. In beiden ist es aufgelistet, aber in keinen erklärt.

    das ist kein Operator, deswegen unterstelle ich einfach mal, Du hast an der falschen Stelle gesucht ;-)

    Das @-Zeichen bewirkt, dass Fehlermeldungen nicht ausgegeben werden. _Mindestens_ in der Entwicklungszeit, in den allermeisten Fällen aber auch im Livebetrieb ist es nicht wirklich sinnvoll, hiervon Gebrauch zu machen. Ein Fehler bedeutet, dass da etwas schief gegangen ist, und dass das Script folglich nicht mehr richtig abgearbeitet werden kann (wie gesagt, allermeistens); daher ist es um einiges besser, mögliche Fehler mit "bla() or die ..." o.ä. abzufangen.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hallo Cheatah,

      (...$link = @msql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);...)
      Ich hab zwei PHP-Bücher. In beiden ist es aufgelistet, aber in keinen erklärt.
      das ist kein Operator, deswegen unterstelle ich einfach mal, Du hast an der falschen Stelle gesucht ;-)

      In PHP ist das tatsächlich ein Operator, der Fehler-Kontroll-Operator, siehe ;-)
      http://www.php.net/manual/de/language.operators.errorcontrol.php

      An welcher Stelle dieser Operator in der Operatorreihenfolge eingeordnet ist, steht hier:
      http://www.php.net/manual/de/language.operators.php#language.operators.precedence

      An Deiner Erläuterung ist m.E. nichts auszusetzen.

      Gruss,

      Vinzenz

  3. In einem Script zur Mysql-Datenein- u. ausgabe fand ich das @-Zeichen vor einem Array als Operator.
    (...$link = @msql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);...)

    Ich weiss nicht, ob es einen '@'-Operator gibt, aber hier wird das '@'-Prefix verwendet um die Warnung zu unterdrücken.
    Für gewöhnlich wird in die Ergebnis-HTML-Seite eine "WARNING:Fehlerbeschreibung" geschrieben. Ist nicht so schön, der User kann damit nix anfangen, also wird sie unterdrückt.
    Noch besser leitet man die Warnung in eine Variable um, die man nachher auslesen kann. Das weiss ich aber nimmer wie geht, und in meinem Buch steht das sowiesonicht.

    MfG, Manuel