Problem mit SQL-Abfrage

Trikatz

Grünschnabel
Hallo, ich bin schon ganz gefrustet, diesmal will es einfach mit der Datenbankabfrage nicht klappen. Die ganz einfache Version funktioniert:

mysql_connect($server, $user, $passwort) or die ( "<h3>Datenbankserver nicht erreichbar</h3>");
mysql_select_db($db) or die ( "<h3>Datenbank nicht vorhanden</h3>");
$res = mysql_query("select * from student");
while ($dsatz = mysql_fetch_assoc($res))
{
echo $dsatz["name"];
}

Aber ich möchte zwei Bedingungen in die Abfrage einfügen. Aus einem Formular erhält das Script die Werte für Alter und Geschlecht und dann soll nur der Datensatz ausgegeben werden, wo das übergebene Alter und Geschlecht mit dem Datenbankwert übereinstimmen. Wenn ich dann aber die Abfrage-Bedingung einfüge:


mysql_connect($server, $user, $passwort) or die ( "<h3>Datenbankserver nicht erreichbar</h3>");
mysql_select_db($db) or die ( "<h3>Datenbank nicht vorhanden</h3>");
$res = mysql_query("select name from student where geschlecht = '$geschlecht' and alter = '$alter'");
while ($dsatz = mysql_fetch_assoc($res))
{
echo $dsatz["name"];
}

erhalte ich immer folgende Fehlermeldung:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

Ich kann mit der Fehlermeldung nichts anfangen, habe das Script schon einige Male verändert, bekomme aber immer wieder die Fehlermeldung. Kann mir jemand helfen?
 
Probier's mal damit:
$res = mysql_query("select name from student where geschlecht = '".$geschlecht."' and alter = '".$alter."'");

redlama
 
PHP:
$res = mysql_query("select `name` from `student` where `geschlecht` = '$geschlecht' and `alter` = '$alter'");

Entweder du benutzt die `` oder du nennst deine Tabellenspalte
nicht "alter", das dies ein MySQL Befehl ist.
 
n1@ voodoo
solche antworten find ich richtig goil!
Direkt
mit Beispiel
vollkommen Richtig
und ausserdem bringste es sofort aufn Punkt!

n1 :-) nur weiter so

und @trikatz
bennen das Feld um
da Reservierte Schlüssel in der Mysql meistens probleme mitsich bringen
wenn du ein Mysqldump erstellst musste sonst dann darrauf achten das du mit Reservierten Schlüsselwerten den Dump erstellst da du es sonst nie wieder in die Mysql importieren kannst
 
Zuletzt bearbeitet:
Hallo Redlama, hallo Voodoo,

vielen Dank für Eure Hilfe. Die Variante von Redlama hat leider auch nicht funktioniert. Aber mit der Umbenennung des Datenbankfeldes von Alter in Jahre bin ich nun schon ein Stück weiter gekommen. Die Fehlermeldung erscheint nicht mehr. Ich bekomme jetzt auch ein Ergebnis angezeigt, oder besser 2 Ergebnisse. Es erscheint jetzt richtig der Datensatz zum passenden Alter, aber das Geschlecht wird nicht berücksichtigt. D.h. gibt es einen Datensatz mit männlichen Namen und einen mit weiblichen Namen, werden leider beide angezeigt, auch wenn nur männlich übergeben wurde. Gibt es dafür vielleicht auch noch eine Lösung? Script sieht jetzt so aus:

mysql_connect($server, $user, $passwort) or die ( "<h3>Datenbankserver nicht erreichbar</h3>");
mysql_select_db($db) or die ( "<h3>Datenbank nicht vorhanden</h3>");
$res = mysql_query("select name from student where geschlecht = '$geschlecht' and jahre = '$jahre'");
while ($dsatz = mysql_fetch_assoc($res))
{
echo $dsatz["name"];
}
 
Tja, vielleicht ist die Variable $geschlecht falsch belegt oder der erwartete Inhalt in DB stimmt nicht.
Probier doch mal deine MySQL Statement vorher zu echo'n, evtl. fällt dir ein Fehler auf.
 
Hallo Voodoo,

vom Formular wird der Wert für "Geschlecht" richtig an das PHP-Datenbankabfrageformular übertragen. Er kann m oder w lauten und auch in der Datenbank heißt das Feld Geschlecht und es gibt Datensätze mit m oder mit w. Oder was meintest Du?
 
Er meinte, dass Du mal das machen sollst:
PHP:
$res = mysql_query("select name from student where geschlecht = '$geschlecht' and jahre = '$jahre'");
print $res;
Dann wird Dir das Statement angezeigt und kannst sehen, wie es lautet.
Vielleicht ist da ja der Fehler zu erkennen.

redlama
 
Hallo Redlama,

ich hab das jetzt mal so ausgeben:

mysql_connect($server, $user, $passwort) or die ( "<h3>Datenbankserver nicht erreichbar</h3>");
mysql_select_db($db) or die ( "<h3>Datenbank nicht vorhanden</h3>");
$res = mysql_query("select name from student where geschlecht = '$geschlecht' and jahre = '$jahre'");
print $res;

Dann erscheint überhaupt nichts, weder Fehlermeldung noch irgendeine Angabe, einfach nur eine leere Seite
 
Also bei mir sehen die Statements so aus:
PHP:
$res = mysql_query("select name, passwort from xyz where email='".$tpl."'");
Und sie funktionieren auch so.
Und wenn Du das so schreibst funktioniert es nicht?
Und das bei "print $res;" nichts angeziegt wird heißt (wenn Du mich fragst) auch nichts gutes.

redlama
 
Zurück