MYSQL Datenbankabfrage klappt nicht...

Nikke123

Mitglied
Hallo Leute,

Es tut mir leid wenn ich mal wieder mit einem Anfängerfehler komme, aber ich lerne PHP grade selber. Ich möchte eine Datenbankabfrage machen die aber nicht klappt. Hier mal der Code:
PHP:
$dbname = 'phpvortrag';
mysql_select_db($dbname, $link);
$sql = "SELECT * FROM faecherliste WHERE name = '".$choosen."' ";
$query = mysql_query($sql) or die (mysql_error());
$_array = mysql_fetch_assoc($query);
echo $_array['f1'];

Bis hier hin geht dann noch alles. Dann geht es aber so weiter und da kommt dann der folgende Fehler:
PHP:
$stdql = "SELECT * 
		  FROM faecherliste
		  WHERE tagstd = mo-1
		  AND k1 = ".$_array['f1']." or 
		    	   ".$_array['f2']." or 
				   ".$_array['f3']." or 
				   ".$_array['f4']." or 
				   ".$_array['f5']." or 
				   ".$_array['f6']." or 
				   ".$_array['f7']." or 
				   ".$_array['f8']." or 
				   ".$_array['f9']." or 
				   ".$_array['f10']." or 
				   ".$_array['f11']." or 
				   ".$_array['f12']." 
		";
$_array2 = mysql_fetch_assoc($stdql);
echo $_array2;
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in E:\PortableApps\Xampp\htdocs\mysql\mysql_query.php on line 30

Danke für eure Hilfe schoneinmal im Vorraus ;)
Grüße Niklas ;)
 
Das was mysql_fetch_assoc erwartet muss ein ResultSet bzw. eine Resource von MySQL sein. Deine Abfrage müsste wie folgt aussehen (ungetestet):
PHP:
$sql = "SELECT * 
          FROM faecherliste
          WHERE tagstd = mo-1
          AND k1 = ".$_array['f1']." or 
                   ".$_array['f2']." or 
                   ".$_array['f3']." or 
                   ".$_array['f4']." or 
                   ".$_array['f5']." or 
                   ".$_array['f6']." or 
                   ".$_array['f7']." or 
                   ".$_array['f8']." or 
                   ".$_array['f9']." or 
                   ".$_array['f10']." or 
                   ".$_array['f11']." or 
                   ".$_array['f12']." 
        "; 

$result = mysql_query($sql);

if (!$result) {
    echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
    exit;
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row["Spalte1"];
    echo $row["Spalte2"];
    echo $row["SpalteN"];
}
Du hast deinen SELECT nicht via mysql_query an die Connection geschickt, daher wusste PHP nicht was es damit anfangen soll.

Liebe Grüße, Marco

Nachtrag:
Du solltest auch deine Strings in dem SQL via ' einschließen und so MySQL zeigen, dass es sich hierbei im Strings handelt. Sonst wird MySQL irgendeinen Murks machen und dir dein ResultSet mit 0 Einträgen zurückliefern oder sogar eine ungültige Ressource als Rückgabe ausgeben.

Zudem musst du jedesmal das machen:
Code:
k1 = ".$_array['f1']." or k1 = ".$_array['f1']." or k1 = ".$_array['f1']." or k1 = ".$_array['f1']." or

Das was du hast ist kein gültiges SQL und wird mit einer Fehlermeldung á la "Blabla Check Syntac near..." zusammentrümmern
und so weiter...

Auch anzumerken ist, dass ein SELECT * FROM sehr böse werden kann, vorallem wenn es später an die Verkettung via JOINS etc. geht. Daher fang lieber früh an, und rufe jede Spalte wirklich einzeln aus den Tabellen abzurufen um späteren Probleme vorzubeugen.

Zu diesem Thema leg ich die die gute Hilfe/Doku von PHP ans Herz: http://php.net/manual/de/function.mysql-fetch-assoc.php
 
Zuletzt bearbeitet:
Sehr gut, danke. Aber jetzt kommt der Fehler:
Anfrage (SELECT * FROM faecherliste WHERE name = 'Niklas Riecken' ) konnte nicht ausgeführt werden : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or' at line 14
Und wenn ich mich nicht täusche hatte ich den vorher nicht :D
 
Zurück