query fehler warum?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • query fehler warum?

    Hallo,

    folgender Query:
    SELECT id FROM tab WHERE id!='".$val."' ORDER BY RAND() LIMIT 0,1

    mysql_error() gibt folgenden Fehler aus:
    You have an error in your SQL syntax near 'RAND() LIMIT 0,1' at line 1

    Vielen Dank für die Hilfe!

    mfg
    flowjob
    Es muss nicht alles einen Sinn ergeben

  • #2
    select id from tabelle where id!='1' order by RAND() limit 0,1

    also das geht auf jeden fall !

    meine Projekte bestaunen: http://www.kleiza.de

    Kommentar


    • #3
      hallo,

      hier nochmal der original query:

      select id from ".$rowv->db_img." where id!='".$w_str[0]."' order by RAND() limit 0,1

      also statt tabelle und statt der $val steht jetz was anderes da, aber das kanns ja nicht sein.

      weiterhin gleicher mysql_error() .

      mfg
      flowjob
      Es muss nicht alles einen Sinn ergeben

      Kommentar


      • #4
        Die Syntax ist korrekt.
        Bitte das Ergebnis folgendes Codes
        PHP-Code:
        $query "select id from ".$rowv->db_img." where id != '".$w_str[0]."' order by RAND() limit 0,1";
        print 
        "query:$query<br>\n";
        $result mysql_query($query)
           or print 
        "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n"

        Kommentar


        • #5
          Hallo,

          hier die Ausgabe ihres Codes:

          query:select id from img where id != '45' order by RAND() limit 0,1
          >>> MySQL-Error: 1064 -> You have an error in your SQL syntax near 'RAND() limit 0,1' at line 1


          hoffe es hilft weiter. mir jedenfalls nicht


          mfg und danke
          flowjob
          Es muss nicht alles einen Sinn ergeben

          Kommentar


          • #6
            Die Query ist korrekt!

            Welche MySQL Version hast Du? Vielleicht findet man was bei den Bugreports.
            Probier mal die Query ohne Hochkomma, also
            PHP-Code:
            $query "select id from ".$rowv->db_img." where id != ".$w_str[0]." order by RAND() limit 0,1"
            (Bei mir funzt dieselbe Syntax mit und ohne Hochkomma wenn "id" vom Feldtyp integer ist)

            Wenn Du dieselbe Query ohne Where-Bedindung durchführst bekommst Du dann auch denselben Fehler. Wir müßten mal draufkommen ob es am RAND() oder an der WHERE Clause liegt.

            Kommentar


            • #7
              Hallo,

              ja es kommt mir fast so vor alsob das irgendwie ein Fehler in mysql ist.
              muss die seite für einen kunden erstellen und der schwört auf strato

              folgende querys gehen nicht:
              PHP-Code:
              $query "select id from ".$rowv->db_img." where id != '".$w_str[0]."' order by RAND() limit 0,1";
              $query "select id from ".$rowv->db_img." where id != ".$w_str[0]." order by RAND() limit 0,1";
              $query "select id from ".$rowv->db_img." order by RAND() limit 0,1"
              also wahrscheinlich liegts am rand() oder?

              mfg
              flowjob
              Es muss nicht alles einen Sinn ergeben

              Kommentar


              • #8
                Bin immer etwas vorsichtig mit der Aussage "Bug gefunden".
                Probier noch diese Queries
                PHP-Code:
                $query "select * from img order by RAND()";
                $query "select RAND()"
                Und dann bräuchten wir die MySQL Version.
                Mit diesem skript findest Du sie raus (unter "version")
                PHP-Code:
                <?php
                $query 
                "show variables";
                $result mysql_query($query)
                   or print 
                "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";

                print 
                "<table border=1><tr><th colspan=2>$query</th></tr>";
                while(
                $row mysql_fetch_array($result)){
                   echo 
                "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
                }
                print 
                "</table>";
                ?>

                Kommentar


                • #9
                  Original geschrieben von hand
                  Bin immer etwas vorsichtig mit der Aussage "Bug gefunden".
                  Probier noch diese Queries
                  PHP-Code:
                  $query "select * from img order by RAND()";
                  $query "select RAND()"
                  der erste query geht nicht.
                  der 2te query geht aber.

                  was bedeutet das?

                  Und dann bräuchten wir die MySQL Version.
                  Mit diesem skript findest Du sie raus (unter "version")
                  PHP-Code:
                  <?php
                  $query 
                  "show variables";
                  $result mysql_query($query)
                     or print 
                  "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";

                  print 
                  "<table border=1><tr><th colspan=2>$query</th></tr>";
                  while(
                  $row mysql_fetch_array($result)){
                     echo 
                  "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
                  }
                  print 
                  "</table>";
                  ?>
                  version: 3.22.32
                  Es muss nicht alles einen Sinn ergeben

                  Kommentar


                  • #10
                    Die Release 3.22.32 stammt vom 14. Februar 2000

                    "order by rand()" gibt es ab Version 3.23

                    Mittlerweile gibt es Version 3.23.54 v. 5. Dezember 2002

                    Habe auch folgende Hinweise im downgeloadeten MySQL Manual gefunden:

                    In MySQL Version 3.23, you can, however, do: SELECT * FROM table_name ORDER BY RAND()

                    In MySQL Version 3.23 you can do:
                    mysql> SELECT id,FLOOR(value/100) FROM tbl_name ORDER BY RAND();

                    Kommentar


                    • #11
                      ok danke.

                      habs jetzt so gemacht:
                      anzahl der einträge auslesen. anzahl - 2.
                      $starter = rand(1,$anzahl)
                      limit ".$starter.",1

                      geht jetzt so.

                      rand() wäre halt nur ein bisschen schöner gewesen.

                      mfg und vielen dank für die Mühe
                      flowjob
                      Es muss nicht alles einen Sinn ergeben

                      Kommentar

                      Lädt...
                      X