Querystrings testen und Fehler abfangen in PHP
frankx
- datenbank
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
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
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
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
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
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
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
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";
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