mysql syntax Fehler nach Serverumzug
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
bedenken
code
entfernen
fehler
garnichts
gedanke
holen
identifikation
ordern
passage
semikolon
server
syntax
tip
url
verkettung
versuch
verwenden
zahl
zeile
-
Hi, bekomme nach einem Serverumzug (mysql Version ist jetzt die neuste) folgende Fehlermeldung:
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 'ORDER BY sort ASC' at line 6
Dies ist natürlich äußerst komisch, denn am Quellcode hat sich ja eigentlich nichts geändert und vorher hat er funktioniert.
Das einzige was ich geändert habe ist meine Connect Datei:
<?php error_reporting(E_ALL); define('MYSQL_HOST', 'localhost'); define('MYSQL_USER', 'BSP'); define('MYSQL_PASS', 'PASS'); define('MYSQL_DATABASE', 'DATA'); mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS); mysql_select_db(MYSQL_DATABASE); ?>
vorher war dort ein externer sql Server eingetragen, jetzt liegt der SQL Server direkt auf dem neuen Webserver.
Die bemeckert Passage dürfte diese hier sein:
$holen = "SELECT * FROM categories_searchcriteria WHERE category_id = $seite ORDER BY sort ASC ;"; $result = mysql_query($holen) OR die(mysql_error()); if($result) { for($i=1; $row= mysql_fetch_array($result); $i++) { $searchcriterium_id = $row['searchcriterium_id']; $sortorg = $row['sort'];
Das merkwürdige ist jedoch wenn ich dort zumbeispiel einfach den order BEfehl entferne bleibt der Fehler, nur das dann in der Fehelrmeldung bei near nur noch ein " steht.
Was könnte der Fehler sein? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Versuch mal aus dieser Zeile:
WHERE category_id = $seite
das zu machen:
WHERE category_id = '$seite'
Außerdem wird am Ende eines SQL Befehles kein Semikolon gemacht, das solltest du entfernen. Deine Query sollte so aussehen:
$holen = "SELECT * FROM `categories_searchcriteria` WHERE `category_id` = '" .$seite."' ORDER BY `sort` ASC";
Du solltest aber bedenken, dass "$seite" abgesichert, bzw validiert ist.
Probiers mal :)
Liebe Grüße -
Versuch mal folgendes: mach aus
das hier:sort ASC
, also Backticks um sort…`sort` ASC
ggamee schrieb:
Völlig überflüssig, wenn
Versuch mal aus dieser Zeile:
WHERE category_id = $seite
das zu machen:
WHERE category_id = '$seite'
nur eine Zahl ist (das muss aber auch sichergestellt sein!)$seite
ggamee schrieb:
Wozu das? Wenn es doch schon so schöne Variablenexpansion gibt solltest du sie auch verwenden…
WHERE `category_id` = '" .$seite."'
-
hackyourlife schrieb:
Völlig überflüssig, wenn
nur eine Zahl ist (das muss aber auch sichergestellt sein!)$seite
Ist es sichergestellt? Vermutlich wird eine ID eine Zahl sein, doch man kann auch als Identifikation einen Namen nutzen. Darum der Gedanke. Aber muss man nicht immer Anführungszeichen um solche Werte machen? Oder nur bei Strings? Ich benutze SQL sehr seltend, doch mein Gedanke ging dahin, dass ich die Dinge immer einkessel, damit es nicht mit folgenden Anweisungen kollidiert.
hackyourlife schrieb:
Wozu das? Wenn es doch schon so schöne Variablenexpansion gibt solltest du sie auch verwenden…
Ich persönlich würde nichtmal die " verwenden, aber Verkettung macht soetwas immer übersichtlicher, ist meine persönliche Meinung. Und da ichs halt aus eigenen Stücken umgeschrieben habe, bin ich gewohnt, die Variablen so einzubauen.
Ist SORT ein Schlüsselwort für MySQL? Ich find dazu garnichts, ob des eins sei. Wofür ist des?
Liebe Grüße -
Also die Variable ist ne Zahl. Deswegen erschließt sich mir wirklich nicht der Sinn, warum man sie in Anführungszeichen setzen sollte.
Es lief ja auch alles auf dem anderen Server. Hat sich irgendwie die mysql Struktur in der neuen Version geändert?
Nein Also eure Verbesserungsvorschläge helfen leider nicht.
sort ist übrigens der Name einer Spalte.
Beitrag zuletzt geändert: 29.9.2012 14:03:44 von no-smoke -
Ich hab dein SQL gerade mal ausprobiert und es funktioniert ohne Probleme. (MySQL 5.5.27)
Ich rate jetzt einfach mal auf register_globals (alter Server aktiviert, neuer nicht mehr). $seite wurde per URL übergeben, aber nicht über $_GET['seite'] ausgelesen. -
Erst mal danke für die ganzen Tipps!
Letztendlich hat der tip von Chatter geholfen. Zwar lag es nicht an registar globals, jedoch wurde eine Variable nicht sauber übertragen. Ich vermute das dem alten Server das irgendwie egal war, der neue hat Ann jedoch beim SQL Code gehangen.
Trotzdem vielen dank an euch!
Auf Lima ist Verlass!
Beitrag zuletzt geändert: 29.9.2012 21:40:37 von no-smoke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage