Abfrage funktioniert nicht

corona

Erfahrenes Mitglied
Guten Morgen an alle!

Ich will eine Art "Suche" auf einer Seite einbauen. Und zwar kann der Besucher auf der ersten Seite "inhalt.php" etwas in einem Textfeld eingeben. Auf der nächsten Seite "auswahl.php" sollte dann die Ergebnisse erscheinen.
Das der Wert der Variable übergeben wird seh ich an dem echo-Befehl. Das Problem ist nur die Abfrage. Und zwar will ich dass er den Wert vom Textfeld mit allen Spalten in der tabelle fahnen untersucht. die übereinstimmende werte soll er mir dann ausgeben. stattdessen gibt er mir die fehlermeldung "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource"

Hier mal der code von der Abfrage auf der Seite "auswahl.php":
Code:

<?php
/* DB auswählen */
mysql_select_db("flags", $link);
$db="flags";

if($res=mysql_db_query($db, $sql, $link)) {
echo "<br>";
}

$sql="SELECT * FROM fahnen WHERE land='".$_GET[search]."' OR deutschland='".$_GET[search]."' OR verschiedenes='".$_GET[search]."' ORDER BY land ASC GROUP BY land";
if($_GET["search"] == "") {
$sql="SELECT * FROM fahnen WHERE land='".$_GET[search]."' OR deutschland='".$_GET[search]."' OR verschiedenes='".$_GET[search]."' ORDER BY land ASC GROUP BY land"; }
if($_GET["search"] != "") {
$sql="SELECT * FROM fahnen WHERE land='".$_GET[search]."' OR deutschland='".$_GET[search]."' OR verschiedenes='".$_GET[search]."' ORDER BY land ASC GROUP BY land"; }
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo "&<a href=\"".$row['link']
."\" class=\"blue\" >".$row['land'].$row['deutschland'].$row['verschiedenes']."</a><br />\n";
}
?>

Meine DB ist so aufgebaut:
id land deutschland verschiedenes link

Weiß jemand den Fehler? :( :( :(
Danke für jede Hilfe
 
Hallo!

Kannst Du mal die folgendes machen:
Code:
echo $sql;
Dann poste das Ergebnis hier. :)

Außerdem verstehe ich nicht wieso Du 3x ein und dieselbe SQL-Abfrage erstellst, aber na gut.

Desweiteren wären der Inhalt und die Datentypen der Spalten interessant. ;)
 
hi,

also dass ich 3 mal die gleiche Abfrage mache, ist mir auch aufgefallen. mein geänderter code sieht jetzt so aus:

<?php
/* DB auswählen */
mysql_select_db("flags", $link);
$db="flags";

if($res=mysql_db_query($db, $sql, $link)) {
echo "<br>";
}

if ($_GET['search']=="")
{$sql="SELECT * FROM fahnen";}
else
{$sql="SELECT * FROM fahnen WHERE land='".$_GET['search']."' OR deutschland='".$_GET['search']."' OR verschiedenes='".$_GET['search']."' ORDER BY land ASC GROUP BY land";}

$result = mysql_query($sql) or die (mysql_error());
while ($row=mysql_fetch_array($result, MYSQL_ASSOC))
{ echo "&nbsp;<a href=\"".$row['link']
."\" class=\"blue\" >".$row['land'].$row['deutschland'].$row['verschiedenes']."</a><br />\n"; }
?>

Bei "echo $sql;" erscheint
"SELECT * FROM fahnen WHERE land='bayern' OR deutschland='bayern' OR verschiedenes='bayern' ORDER BY land ASC GROUP BY land"
Das ist doch ok so, oder?

Da ich die Funktion mysqlerror() eingefügt habe, sagt er mir was von:
"You have an error in your SQL syntax near 'GROUP BY land' at line 1"
Ich finde da aber keinen Fehler :( :( :(

hilfe
 
Zurück