PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler beim ausführen der Anfrage:You have an error in your SQL syntax; check the man



chris21
31-08-2009, 21:15
Hallo,
wäre super wenn mir jemand helfen könnten.
Der Code hat shcon mal bei einem anderen Webspaceanbieter funktioniert.
Jetzt bin ich umgezogen und bekomme es nicht mehr hin.

Fehlermeldung:

Fehler beim ausführen der Anfrage: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 '' at line 2

Weis jemand was der Fehler ist ? Irgenwo im Web habe ich gelesen, dass es an der Zeile


$result = @mysql_query("SELECT eBook.ideBook,eBook.Titel,eBook.Autor,Thema.Thema AS Thema FROM eBook
LEFT JOIN Thema AS Thema ON (eBook.Thema=Thema.idThema) ORDER BY $ord;");

liegen könnte ? Wei die wohl Iterativ ausgeführt wird, oder so.

Hab nut leider zu wenig Ahnung um die Zeilen umschriben zu können.
Hoffe auf euch Profis! Danke!

Chris





<HTML>
<HEAD>

<!-- Hintergrundfarbe -->
<BODY BGCOLOR="#101010">

<!-- Textfarbe -->
<BODY TEXT="#FFFFFF">

<!-- Link Farbe -->
<BODY LINK="#FF60FF">
<!-- Besuchter Link -->
<BODY VLINK="#FF2020">
<!-- Aktiver Link -->
<BODY ALINK="#FF2020">
<!-- Standard Schriftgrösse -->
<BASEFONT SIZE=5>

</HEAD>


<BODY>


<?php
$db_host = "localhost";
$db_user = "*****";
$db_pass = "*****";

$datab = "*****";



function print_result_table($result){
// Tabellenanfang
echo "<table border='1'>\n";
// 1. Tabellenzeile Anfang
echo " <tr>\n";
// Kopfzeile der Tabelle schreiben
// Als Links schreiben, wird auf die Bezeichnung Spalte geklickt,
// wird die Tabelle nach der angeklickten Spalte sortiert
for ($i = 0; $i < mysql_num_fields($result); $i++)
{
echo "<td><font face=\"Verdana, Arial, Helvetica, sans-serif;\" size=\"1\"><CENTER><a href=test2.php?ord=".mysql_field_name($result,$i).">".mysql_field_name($result,$i)."</a></CENTER></font></td>";
}
// Überschrift für manuell hinzuegfügte Spalte
echo "<td><font face=\"Verdana, Arial, Helvetica, sans-serif;\" size=\"1\"><CENTER>Infos</CENTER></font></td>";
//echo '<td><font face="'.$fontFamily.'"><center>Infos</center></font></td>';

// 1. Tabellenzeile Ende
echo " </tr>\n";

// Alle Ergebniszeilen durchgehen
while ($row = mysql_fetch_row($result)){
// Tabellenzeilen-Anfang
echo " <tr>\n";
// Alle Spalten durchgehen
for ($i = 0; $i < mysql_num_fields($result); $i++)
{
// Link als Hyperlink anzeigen
// Link ist in Spalte 4
if ($i==4)
{
echo "<td><a href=$row[$i]>$row[$i]</a></td>";
}
else
{
// Falls kein Inhalt leerzeichen ausgeben, damit komplette Tabellenrahem gezeichnet wird
if ($row[$i] == "")
{
echo "<td><font face=\"Verdana, Arial, Helvetica, sans-serif;\" size=\"1\"><CENTER>-</CENTER></font></td>";
}
else
{
echo "<td><font face=\"Verdana, Arial, Helvetica, sans-serif;\" size=\"1\"><CENTER>$row[$i]</CENTER></font></td>";
}
}

}
// Spalte mit "Mehr Infos" hinzufügen
echo "<td><font face=\"Verdana, Arial, Helvetica, sans-serif;\" size=\"1\"><CENTER><a href=mehr_infos.php?id=$row[0]>Mehr Info's</a></CENTER></font></td>";
// Tabellenzeilen-Ende
echo " </tr>\n";
}
// Tabellenende
echo "</table>\n";
}


// Hauptprogramm

/* Verbindung zur Datenbank aufbauen */
$db = @mysql_connect($db_host,$db_user,$db_pass)
or die(mysql_error());
@mysql_select_db($datab,$db) or die(mysql_error());

/* HTML-Startcode ausgeben */
echo "<html>\n<body>\n";

/* SQL-Abfrage */
//$result = @mysql_query("SELECT * FROM eBook");
// verkürzte tabelle anzeigen
//$result = @mysql_query("SELECT ideBook,Titel,Autor,Thema FROM eBook ORDER BY $ord;");

$result = @mysql_query("SELECT eBook.ideBook,eBook.Titel,eBook.Autor,Thema.Thema AS Thema FROM eBook
LEFT JOIN Thema AS Thema ON (eBook.Thema=Thema.idThema) ORDER BY $ord;");

if (!$result)
{
echo("<p>Fehler beim ausführen der Anfrage:" . mysql_error() . "</p>");
}
else
{
print_result_table($result);
}

/* HTML-Endcode ausgeben */
echo "</body>\n</html>\n";
?>

</BODY>
</HTML>

TBT
31-08-2009, 22:24
$ord scheint nicht gefüllt zu sein,
mach mal vor die Query ein

echo "Ord: ".$ord;

chris21
01-09-2009, 21:17
Hi,
erstmal super danke für die schnelle Antwort.

Du hast recht!
Wenn ich die Zeile ohne ORDERED BY aufrufe wird mir die gewünschte Tabelle fehelrfrei angezeigt.

Nur ganz verstehen tu ich's noch nicht ganz.

Ich müsste doch das Skript dann so aufrufen :

http://chri5.kilu.de/test2.php?ord=Titel

damit ord gefüllt ist ? Das klappt aber nicht ?? Kannst du mir sagen warum ...


Ich habe mal das ORDERED BY weggelassen und muss feststellen, dass die Tabelle angezeigt wird.

http://chri5.kilu.de/test3.php

Danke für die schnelle Hilfe,
Chris

TBT
02-09-2009, 18:04
dann ist register_globals auf off,
nutze $_GET['ord']

prüfe aber, das dort wirklich nur "ASC" oder "DESC" drin
ist, ansonsten haste ne schöne SQL Injection

chris21
03-09-2009, 18:00
Super,danke!

Chris