[mysql 4.0.12] Abfrage verfeinert klappt nicht

Naisetsu

Mitglied
Hallo Experten...

Das funktioniert ganz gut:
PHP:
$sql = "SELECT * FROM navigation";
$ergebnis = mysql_query($sql);
while($zeile = mysql_fetch_array($ergebnis))
{
print $zeile[content];
}

Nur möchte ich nur einen bestimmten Datensatz.
Aus welchem Grund funktioniert das nicht?

PHP:
$sql = "SELECT * FROM $table WHERE show = $show";
$ergebnis = mysql_query($sql);
while($zeile = mysql_fetch_array($ergebnis))
{
print $zeile[content];
}

$show erhalte ich über "index.php?show=befehle"

Wo liegt der Fehler bei der Syntax?

Liebe Grüsse
Alex
 
Versuchs mal mit
PHP:
$sql = "SELECT * FROM $table WHERE show = ".$_GET["show"]; 
$ergebnis = mysql_query($sql); 
while($zeile = mysql_fetch_array($ergebnis)) 
{ 
print $zeile[content]; 
}
 
ronaldo84 hat gesagt.:
Versuche es mal wenn du show='$show' machst.
Und was soll das bringen? Weil, wenn die php.ini nicht entsprechend konfiguriert ist, der entsprechende String nicht aus der URL genommen wird. Das sicherster ist wirklich hier mit $_GET["show"] (siehe oben) zu arbeiten. Dadurch umgehst du die php- Einstellungen. ;)
 
Da funktioniert keine der beiden Ansätze...

Die Variabel erhalte ich ohne Probleme!

PHP:
print $show; // gibt 'befehle' aus

Die Fehlermeldung kennt ihr sicher, daran kann man nichts herauslesen:
PHP:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in h:\designs\_cms\index.php on line 63

das Problem scheint eindeutig irgendwie daran zu liegen, dass alles NACH SELECT * FROM $table nicht richtig geselen wird

Die Bezeichnungen sollten mit der DB übereinstimmen...
 
Mach mal eine SQL- Fehleranalyse mit mysql_error(). Setz das einfach nach die SQL- Abfrage.
Wird $table auch über die URL weitergegeben?
 
Code:
Fehler in der Abfrage:
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 'show = befehle' at line 1

Woran bitte schön soll huier der Fehler liegen? Er bekommt ja alle Daten Richtig und kann sie ja auch auslesen! *grrr...*

Gruss
Alex
 
Ach Gott....... auch wenn er nichts dafür kann... :)

Ich habe nun anstelle der Spaltenbezeichnung 'show' habe ich die Bezeichnung 'title' genommen!

UNd es klappte. Kann es sein, dass show ein verbotenes Wort ist, welches für mysql/php reserviert ist

Grüsse
Alex
 
SHOW ist tatsächlich eines der reservierten Schüsselwörter von MySQL. Aus diesem Grund sollte man Tabellen- und Spaltennamen stets mit Backticks (`) umschließen:

PHP:
$sql = "SELECT * FROM `$table` WHERE `show` = '".mysql_real_escape_string($_GET["show"])."'";
 

Neue Beiträge

Zurück