Michael: Nächstes Problem: LIMIT mit Variablen

Beitrag lesen

Hallo Dedlfix!

Ja, das stimmt soweit. Du nimmst jedoch nur an, dass du sie in $aktion einbaust. Tust du aber nicht, weil du die falschen Anführungszeichen verwendest. Es nützt nichts, sich nur $startposition anzuschauen, denn letztlich willst du ein ordentliches SQL-Statement in $aktion haben. Also schau dir an, was $aktion beinhaltet. Und dann wechsel mal die Anführungszeichen zu "" und schau noch einmal. (Und mach dir den Unterschied zwischen '' und "" klar!)

Von welchen Anführungszeichen in meinem SQL-Statement sprichst Du denn?

$aktion='SELECT testbank_id, testbank_vorname, testbank_familiennameFROM014_testbank LIMIT 3,4';

funktioniert und

$aktion='SELECT testbank_id, testbank_vorname, testbank_familiennameFROM014_testbank LIMIT $startposition,4';

funktioniert nicht. Die Anführungszeichen sind in beiden Fällen gleich. Was meintest Du?

Das mit der Zeile wirst du nun hoffentlich verstanden haben.

Wenn Du das mit den Anführungszeichen meinst, dann nicht. :-(

Ansonsten ist es vorteilhaft, die Abarbeitung des nächsten Schrittes vom Erfolg des jeweils vorhergehenden Schrittes abhängig zu machen.

Das habe ich auch. Ich hab das nur hier nicht gepostet, um meinen Beitrag nicht zu groß werden zu lassen.

Übrigens, die Werte für LIMIT kann man nicht per Platzhalter in einem Prepared Statement übergeben.

Das wußte ich nicht, aber...

muss der MySQL-Server eine Zahl zu Gesicht bekommen und keinen Platzhalter. Das meinte ich mit direkt reinschreiben. Sie müssen direkt im SQL-Statement stehen. Wie du dieses vorher zusammenstückelst, bekommt der DB-Server ja nicht mit. Es zählt das Ergebnis, das fertige SQL-Statement. Darauf bezog sich meine Aussage.

$aktion = sprintf("SELECT feld1,feld2 FROM table WHERE feld=? LIMIT %s,4", intval($_GET['start']));

Jetzt sorgt das intval() für einen garantierten Zahlenwert, auch wenn der böse Bube SQL-Code in den Querystring schrieb (in dem Fall ist 0 der Rückgabewert von intval()).

...$_GET['start'] ist ja auch eine Variable und keine Zahl. _Das_ geht und mit einer Normalen Definition a là $start=12 geht es _nicht_ ? Wieso?

MfG

Michael