Thomas Luethi: Variable mit Datenbankspalte überprüfen

Beitrag lesen

Hallo,

So habe ich das jetzt getestet, nur leider passiert gar nichts mehr, sobald der Wert nicht in der Datenbank aufgeführt ist.

//Von Vorseite über Formular übergeben: $wert = 11111, Beispiel

Bist Du sicher, dass der Wert drin steht?
Wie uebernimmst Du ihn?

$ergebnis = mysql_query("SELECT ID FROM $tbl WHERE ID = '$wert'");

Mach die Query lieber zuerst in eine Variable, dann kannst
Du sie auch anzeigen lassen:

$query="SELECT ID FROM $tbl WHERE ID = '$wert'";

AFAIK sind die Backticks (`) um die Variablennamen nicht
notwendig, evtl. sogar falsch. Versuch's mal ohne:

$query="SELECT ID FROM $tbl WHERE ID = '$wert'";

echo "Query:<br>$query<br>\n";
$ergebnis = mysql_query($query);

while ($test=mysql_fetch_array($ergebnis)) {

//Version 1
$numrows = mysql_num_rows($test);
if (! $numrows) {echo "<p>Kein Ergebnis</p>";}

Du solltest IMHO eher pruefen, ob es 0 oder ob es mehr Zeilen sind.
if ($numrows<1)
  {/* kein Ergebnis*/}
else
  {/*mind. 1 Ergebnis*/}

(Null und false sind nicht immer gleichbedeutend!)

else {echo "<p>Ergebnis</P";}

^^ Da fehlt ">". Besser klein: </p>

//Version 2
if ($test[ID] !== $wert) {

Wo hast Du die Konstante ID definiert?
Und wo/wie den Array $test?
Und warum pruefst Du mit !== und nicht einfach mit != ?

Wenn der String "ID" gemeint ist, solltest
Du es unbedingt so schreiben: $test['ID'].

Lies: "Warum ist $foo[bar] falsch?"
http://www.php.net/manual/de/language.types.array.php#language.types.array.foo-bar
Wichtige Ausnahme: Innerhalb von doppelten Anfuehrungszeichen:
http://www.php.net/manual/en/language.types.string.php#AEN3553
http://www.php.net/manual/en/language.types.array.php#AEN3791

Gruesse,

Thomas