frankx: Querystrings testen und Fehler abfangen in PHP

Hellihello,

zum Rumprobieren mit Datenbankabfragen würde ich gerne Querystrings auf Gültigkeit bzw. Korrektheit/Funktionalität testen und wenn nicht bestanden auf eine funktionierende Standardabfrage backfallen (oder wie sagt mensch dem?). Kennt PHP nicht sowas wie @ um Fehlermeldungen zu ignorieren und kann ich den auch catchen, den etwaigen Fehler? Oder lässt sich die syntaktische Korrektheit anders besser abfragen?

Dank und Gruß,

frankx

  1. Hallo,

    Kennt PHP nicht sowas wie @ um Fehlermeldungen zu ignorieren und kann ich den auch catchen, den etwaigen Fehler?

    Natürlich, echo.
    z.B. echo mysql_query(...); gibt im Erfolgsfall 1, ansonsten 0 zurück wenn ich nicht irre.
    Je nach Funktion erhälst du so die gewünschte Erfolgs- bzw. Fehlermeldung.

    Daneben error_reporting() natürlich.

    Grüße, Matze

    1. Hellihello,

      danke, irgendwie hatte ich mich zuweit verdacht und zu wenich getestet.

        
       $test_q_string=("quatsch SELECT Farbe FROM Farben WHERE 1");  
       $test_out= mysql_query($test_q_string);  
       if ($test_out==false) {  
        echo "das war nischt";  
       }  
       else {  
        while ($row=mysql_fetch_row($test_out)) {  
         var_dump($row);  
        }  
       }  
      
      

      geht ja. Ich dachte, es würde ein PHP-Fehler gethrown oder getriggert der irgendwie abzufangen wäre. Aber eine falsche Anfrage gibt einfach false zurück. Prima.

      Dank und Gruß,

      frankx

      1. Hallo,

        $test_q_string=("quatsch SELECT Farbe FROM Farben WHERE 1");

          
        Warum setzt du den String in Klammern?  
          
        
        > ~~~php
          
        
        >  $test_out= mysql_query($test_q_string);  
        >  if ($test_out==false) {  
        >   echo "das war nischt";  
        >  }  
        >  else {  
        >   while ($row=mysql_fetch_row($test_out)) {  
        >    var_dump($row);  
        >   }  
        >  }  
        > 
        
        

        Das geht aber auch einfacher.

          
        if($test_out=mysql_query("SELECT irgendwas irgendwoher")){  
           echo "toll gemacht";  
        }else{  
           echo "kein guter Versuch!";  
        }  
        
        

        Grüße, Matze

        1. Hellihello Matze,

          Warum setzt du den String in Klammern?

          das war vielleicht ein copy_paste Irrtum.

          if($test_out=mysql_query("SELECT irgendwas irgendwoher")){

            
          Daran hab ich mich noch nicht gewöhnen können, dass beim Zuordnen eines Wertes zu einer Variablen eben dieser zurückgegeben wird. Und "nicht" ist booles "false" oder ints 0 oder NULL (kein Wert) oder strings Leerzeichen.  
            
          Dank und Gruß,  
            
          frankx
          
          1. Hallo,

            if($test_out=mysql_query("SELECT irgendwas irgendwoher")){

            
            >   
            > Daran hab ich mich noch nicht gewöhnen können, dass beim Zuordnen eines Wertes zu einer Variablen eben dieser zurückgegeben wird. Und "nicht" ist booles "false" oder ints 0 oder NULL (kein Wert) oder strings Leerzeichen.  
              
            Nein, der Wert wird in dem Fall \_nicht\_ zurück gegeben, sondern übernommen. Also TRUE oder FALSE. Also wenn $test\_out == TRUE || FALSE.  
              
            Grüße, Matze
            
            1. Hellihello Matze,

              Nein, der Wert wird in dem Fall _nicht_ zurück gegeben, sondern übernommen. Also TRUE oder FALSE. Also wenn $test_out == TRUE || FALSE.

              Häh, irgendwas kapier ich net:

                
               echo $test="adsf"; //asdf  
               if ($test="adsf") echo "jap"; //jap  
               if ($test="") echo "jap";  
               else echo "nope"; // kommt nope weil string leer  
              
              

              Bei der Zuweisung wird doch der Wert zurückgegeben?

              Dank und Gruß,

              frankx

              1. echo $begrüßung;

                echo $test="adsf"; //asdf
                if ($test="adsf") echo "jap"; //jap
                if ($test="") echo "jap";
                else echo "nope"; // kommt nope weil string leer

                
                >   
                > Bei der Zuweisung wird doch der Wert zurückgegeben?  
                  
                Ja. Allgemein gesagt: Das Ergebnis einer Zuweisung ist der Wert der Zuweisung.  
                  
                Wenn dieses Ergebnis in einem boolschen Kontext steht, z.B. Bedingung einer if-Anweisung, führt PHP eine automatische Typumwandlung nach Boolean durch, wobei die im PHP-Handbuch angegebenen Regeln [Converting to boolean](http://de.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting) gelten.  
                  
                  
                echo "$verabschiedung $name";
                
  2. Hi,

    was sind Querystrings?

    was sind Datenbankabfragen? ... Nein, natürlich Spass.

    Niemand hindert dich daran eine Validierung (definiere für dich und den Anwendungsfall, was genau "Korrektheit" bedeutet) der gesendeten Querystring Werte durchzuführen (mit welchen Mitteln du das gern machen möchtest?) und danach auf eine bestehende Datenbankabfrage (ist ja eigentlich nur etwas nichtssagender Text, oder?) aus einer Hashtable oder was auch immer einen fall-back zu machen.

    Ciao, Frank