Problem mit if - else

spielmannszug

Grünschnabel
Ich möchte mit einem Select-Befehl Daten aus einer SQL-Datenbank abrufen. Wenn sich in der Reihe ein Datensatz befindet, soll dieser angezeigt werden. Ist die entsprechende Reihe leer, dann soll eine Fehlermeldung ausgegeben werden.

Mein Code (der leider nicht korrekt funktioniert):

PHP:
$result = mysql_query("SELECT datensatz FROM tabelle WHERE id = 1");
if(empty($result)) 
{
echo "Leider kein Datensatz gefunden.";
}
else 
{
echo $row["datensatz"]; 
}

Freue mich sehr auf Eure Hilfe.
 
[phpf]mysql_query[/phpf] gibt keinen Wert zurück sondern nur eine MySQL Ressource.

PHP:
$result = mysql_query("SELECT datensatz FROM tabelle WHERE id = 1");
$row = mysql_fetch_assoc($result);
if(empty($row['datensatz'])) 
{
echo "Leider kein Datensatz gefunden.";
}
else 
{
echo $row["datensatz"]; 
}

So sollte es funktionieren.
 
Zuletzt bearbeitet:
Existiert die Spalte datensatz in jedem Fall oder ist das zu prüfen? Dann gibt MySQL eine Fehlermeldung zurück und $result wird false:
PHP:
if (!$result) {
    die('Leider kein Datensatz gefunden. (MySql meldet "' . mysql_error() . '").');
}

Wenn die Spalte in jedem Fall exisitiert und nur evtl leer (also ohne Daten) sein kann, musst du mit mysql_fetch_array o.ä. arbeiten, und die Meldung ausgeben, wenn da Ergebnis empty ist.

edit: Da war einer schneller =)
 
@ Felix Jacobi: Ich habe Deinen Code gerade getestet. Bei mir funktiniert es leider nicht. :confused:

@ unknown_fool: Die Spalte datensatz existiert auf jeden Fall. Nur ist nicht in jeder Zeile ein Datensatz vorhanden.
 
Probier das mal

PHP:
$Verbindung = mysql_connect("$DatabaseHost", "$DatabaseUser", "$DatabasePassword");
mysql_select_db("$Database", $Verbindung);

$result = mysql_query("SELECT datensatz FROM tabelle WHERE id = 1", $Verbindung); 
$row= mysql_fetch_object($result);

if(mysql_num_rows($result)=0)  
{ 
echo "Leider kein Datensatz gefunden."; 
} 
else  
{ 
echo $row->datensatz;
}

Das gibt jetzt einen Datensatz wieder.... Wenn du mehr willst benutz eine for schleife ;)
 
Erstmal möchte ich mich bei allen für die super schnelle Hilfe bedanken!

Leider habe ich aber noch keine 100% funktionierende Lösung gefunden. Bei allen Codes tritt folgendes Problem auf. Wenn die Zeile leer ist, wird kein echo ausgegeben. Es wird einfach gar nichts angezeigt :confused:
 
Das Skript von schwarzerhut ist fast richtig, probiere es mal so:

PHP:
if(mysql_num_rows($result)==0)  
{ 
echo "Leider kein Datensatz gefunden."; 
} 
else  
{ 
echo $row->datensatz;
}

Er hatte statt einem Vergleich eine Zuweisung gemacht, weshalb immer Leider kein Datensatz gefunden ausgegeben wurde.
 
@ Felix Jacobi: Ich habe den Code geändert, aber es bleibt dabei. Wenn kein DB-Eintrag in der Spalte gefunden wurde, dann wird kein Echo ausgegeben. Es wird gar nichts angezeigt/ausgegeben.

Woran liegt es bloß?
 
Zurück