PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP/MySQL: Ausgabe einer Fehlermeldung bei erfolgloser Datenbankabfrage


BSG
25.06.2008, 09:54:08
Hallo!

Ich beschäftige mich momentan mit PHP/MySQL. Nun habe ich folgendes Problem:

Ich gebe über ein Formular einen Variablenwert ein, den ich dann an eine PHP-Datei übergebe. Mit diesem Wert soll dann in einer vorhandenen MySQL-Datenbank eine Abfrage durchgeführt und anschließend Werte aus der Datenbank ausgegeben werden. Das funktioniert soweit auch ganz gut.

Hier mal mein Code:

$sql = "SELECT * FROM tabellenname WHERE eingegebene_variable='$variable'";
$result_handle = mysql_query($sql);
if(!$result_handle)
die('SQL-Abfrage fehlgeschlagen! ');

Nun ist es so, dass ich nur eine Fehlermeldung bekomme, wenn die gesamte Abfrage nicht durchgeführt werden konnte.

Ich möchte es nun aber dahingehend erweitern, dass auch eine Fehlermeldung erscheint, wenn der Variablenwert nicht in der Datenbank gefunden werden konnte. Momentan ist es noch so, dass die Ausgabe trotzdem stattfindet, aber keinen Inhalt liefert (was ja auch logisch ist, da nichts gefunden wird).

Kann mir jemand einen Tipp geben, wie ich soetwas realisieren kann?

latux
25.06.2008, 11:12:25
Hallo BSG,

führe deine Abfrage wie angegeben:
$sql = "SELECT * FROM tabellenname WHERE eingegebene_variable='$variable'";
$result_handle = mysql_query($sql);

Wenn die Abfrage positive ist (Ergebniss ist vorhanden), machst du weiter, wenn nicht, Fehlermeldung:

$result_anz=mysql_num_rows($result_handle);
if($result_anz != 0){
// Ergebniss ist da, es wird weiter bearbeitet. z.B.:
$result=mysql_fetch_array($result_handle);
...
}else{
// kein Ergebniss vorhanden, Fehlermeldung
echo "Fehlermeldung";
}


MfG
Latux

BSG
25.06.2008, 11:26:41
Hallo Latux!

Zunächst mal danke für die Antwort!

Wäre es nun noch möglich, diesen Fehler weiter zu differenzieren?

Also er prüft ja nun nur die Anzahl der Einträge in der Datenbank, und wenn diese größer als Null ist, dann macht er weiter. Könnte man das nun noch dahingehend erweitern, dass das Vorhandensein des Suchbegriffs "$variable" selbst in der Datenbank geprüft wird und erst im nächsten Schritt die Prüfung auf die Anzahl der Einträge erfolgt?

Damit könnte man dann nämlich Fehlermeldungen ausgeben, die aussagekräftiger wären.

latux
25.06.2008, 11:56:23
Hi BSG,

Also er prüft ja nun nur die Anzahl der Einträge in der Datenbank
Nein, nein, du muss prüfen ob der Suchbegriff in ein oder mehreren Felder vorhanden ist. Du muss in deiner Abfrage in jedem Feld suchen. das heisst:
statt
$sql = "SELECT * FROM tabellenname WHERE eingegebene_variable='$variable'";
muss du jedem Feld einzel prüfen:
$sql = "SELECT * FROM tabellenname WHERE feld_1 LIKE '%$variable%' OR feld_2 LIKE '%$variable%' OR feld_3 LIKE '%$variable%' ";
$result_handle = mysql_query($sql);
$anzahl = mysql_num_rows($result_handle);

Dann weisst du ob dein Suchbegriff vorhanden ist (Gesamtanzahl).
Gruß
Latux

BSG
25.06.2008, 16:55:58
Danke. Werde mir das nochmal ansehen.