berlinsurfer: ORDER BY Variablenfrage

Beitrag lesen

Hallo, dedlfix,
danke für die detailierten Ausführungen, in der Tat funktioniert es mit dem pma. Ich hatte auch schon an die prepared statements gedacht, allerdings keine Information darüber gefunden, ob man auch den ORDER BY-Zweig ersetzen kann. Wäre es denn so richtig:

PREPARE stmt_name FROM "SELECT * FROM testtabelle ORDER BY ?";  
SET @tparm = "town";  
EXECUTE stmt_name USING @tparm;  

Eine Alternative wäre natürlich, das ORDER-Kriterium vorher in eine php-Variable einzulesen und dann den SQL-Query neu zusammenzusetzen. Ich würde aber eine reine SQL-Lösung bevorzugen (aus Interesse :-)).
Gruß,
Jan

Hi!

Also so, wie ich es vermutet habe. Jedes Statement im PHPmyAdmin wird einzeln abgesetzt, benutzt also immer eine neue Verbindung.

Diese Schlussfolgerung ist falsch. Der PMA verwendet auch bei Verwendung der PHP-Extension mysql statt mysqli nur eine Verbindung bei mehreren Statements. Man kann das ja ganz einfach nachprüfen, indem man folgendes probiert:

SET @foo := 42;
  SELECT @foo;

Ergibt eine Ergebniszeile mit einem Wert 42. In der Hinsicht ist also alles bestens. Die Nicht-Sortierung[*] hat eine andere Ursache: https://forum.selfhtml.org/?t=199341&m=1340970

[*] Ja, Nicht-Sortierung. Die beobachtete Sortierung nach der ID ist nur scheinbar eine solche und kommt daher, dass zufällig die Datensätze in der Reihenfolge der IDs in der Tabelle liegen und in der Reihenfolge ausgegeben werden.

Lo!