kostenloser Webspace werbefrei: lima-city


mysql syntax Fehler nach Serverumzug

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    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
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Versuch mal folgendes: mach aus
    sort ASC
    das hier:
    `sort` ASC
    , also Backticks um sort…

    ggamee schrieb:
    Versuch mal aus dieser Zeile:
    WHERE category_id = $seite

    das zu machen:
    WHERE category_id = '$seite'
    Völlig überflüssig, wenn
    $seite
    nur eine Zahl ist (das muss aber auch sichergestellt sein!)

    ggamee schrieb:
    WHERE `category_id` = '" .$seite."'

    Wozu das? Wenn es doch schon so schöne Variablenexpansion gibt solltest du sie auch verwenden
  5. g****e

    hackyourlife schrieb:
    Völlig überflüssig, wenn
    $seite
    nur eine Zahl ist (das muss aber auch sichergestellt sein!)

    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
  6. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    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
  7. 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.
  8. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    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
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!