PDO und mySQL Limit

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

  • PDO und mySQL Limit

    Hallo,

    ich bin über einen Fehler im PDO gestolpert, der keine Übergabe von Start und Limit-Anzahl erlaubt.

    So soll der Test-Query eigentlich aussehen:
    SELECT user FROM test WHERE user='test' LIMIT 0,100

    Dieser wird mit dem folgenden Array an PDO übergeben
    array(":user" => "test", ":user" => 0, ":anzahl" => 100 )
    SELECT user FROM test WHERE user= :user LIMIT :start , :anzahl

    Im Anschluss wird erst der Query an prepare() übergeben und mit dem Array per execute() ausgeführt.

    PDO macht leider folgenden Query daraus, was zu einem Fehler führt
    SELECT user FROM test WHERE user='test' LIMIT '0','100'

    Der Fehler ist bekannt (http://bugs.php.net/bug.php?id=40740) nur leider in der neusten PHP Version (5.2.5, Windows) noch nicht behoben.

    Hat jemand einen Tipp oder Workaround, mit dem man dieses Problem sicher umgehen kann?
    Natürlich kann ich auch den Query auch normal mit PHP bauen.
    Nur wenn ich schon den PDO einsetze möchte ich ihn gerne für alle Datenbehandlungen (Vorbeugen von SQL Injections) verwenden.

    Ratlos Poscht

  • #2
    PHP-Code:
    array(":user" => "test"":user" => 0":anzahl" => 100 
    wer erzeugt solche arrays und warum?
    EDIT:
    Zu spät gesehen, worum es wirklich geht.

    [23 Mar 2007 3:12pm UTC]

    Emulation is wrong if it doesn't work. Numbers after LIMIT should not be
    quoted.
    Hilft nicht weiter?

    Zuletzt geändert von TobiaZ; 15.04.2008, 17:34.

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      PHP-Code:
      array(":user" => "test"":user" => 0":anzahl" => 100 
      wer erzeugt solche arrays und warum?
      EDIT:
      Ich habe gerade gesehen dass das Array nicht ganz richtig ist. Richtig müßte es so sein.
      PHP-Code:
      array(":user" => "test"":start" => 0":anzahl" => 100 


      Ich
      Das ist ein Beispiel-Array um mein Problem zu verdeutlichen.
      In PHP stehen natürlich an Stelle der Werte Variablen.

      Emulation is wrong if it doesn't work. Numbers after LIMIT should not be quoted.
      Hilft nicht weiter?
      Nicht so ganz.
      Ich bin davon ausgegangen, dass PDO die übergebenen Zahlen nicht quotet und sie normal beim Limit einsetzt. Aus diesem Grund bin ich auch über dieses Verhalten gestolpert.

      Oder besser gefragt: Quotet der PDO alles was er an Daten bekommt? Auch Zahlen? Ich komme an den SQL String nach dem prepare() leider nicht mehr ran, sonst könnte ich mir die Frage und den ganzen Post sparen.

      Poscht
      Zuletzt geändert von Poscht; 16.04.2008, 10:50.

      Kommentar

      Lädt...
      X