Ankündigung

Einklappen
Keine Ankündigung bisher.

Tipp für Einsteiger

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tipp für Einsteiger

    Hurraaa, ich bin jetzt ein "Erfahrener Benutzer"

    und das nur durch vieles dummes Fragen

    Gebe aber trotzdem hier mal einen Tipp für Einsteiger. Der mich viel Zeit gekostet hat. In welchem Fall wird im folgenden Code die Tabelle d_log gelöscht?
    PHP-Code:
    if ($value == "drop") {
        
    Db()->query("DROP TABLE IF EXISTS `d_log`;");

    Man könnte meinen, wenn $value="drop" ist. Das ist natürlich richtig. Sie wird aber auch gelöscht, wenn $value=true ist. Damit habe ich gestern eine schmerzliche Erfahrung gemacht. Die Tabelle war weg und ich hatte erst keine Ahnung, warum.
    Abhilfe: if ($value === "drop")
    (wie gesagt, ein Einsteigertipp.).

    Vielleicht hat ja noch jemand einen Tipp.

    Liebe Grüße

    Kerstin

  • #2
    Diese Erfahrung macht wohl am Anfang (fast) jeder mal. s.a. Fallstricke bei typeschwachen Stringvergleichen

    Kommentar


    • #3
      Jo...

      PHP-Code:
      var_dump("drop" == true); // bool(true) 
      Siehe auch hier: http://php.net/manual/de/types.comparisons.php

      Daher sollte man besser auch immer die typsicheren Vergleichsoperatioren verwenden, ausser es ist explizit anders gewünscht.

      Eine ähnliche "Falle" gibt es zB bei strpos() ...
      PHP-Code:
      $str 'Hasen'
      var_dumpstrpos($str'Hase') == false ); // bool(true) 
      ... dazu gibt es aber eh auch einen schönen Hinweis in der Doku: http://php.net/manual/de/function.st...s-returnvalues

      @jspit: Nette Zusammenfassung! ... könnte man direkt in der Wissensammlung gebrauchen

      LG

      Kommentar


      • #4
        Zitat von Kerstin83 Beitrag anzeigen
        Vielleicht hat ja noch jemand einen Tipp.
        Der Pro-Tipp lautet: Bau keine solchen potentiell desaströsen Befehle in dein Programm ein!

        Solange du nicht einen PHPMyAdmin-Ersatz baust, gehören solche Anweisungen nicht in den Programmcode...

        Kommentar


        • #5
          Zitat von hausl Beitrag anzeigen
          Ich war so frei (leicht abgeändert): http://php-de.github.io/jumpto/stringvergleiche/

          Danke!

          PS: Wie üblich.. Wenns was dazu gibt, du weißt wo du mich findest

          Kommentar

          Lädt...
          X