MYSQL - Abfrage aus Variable ausführen und Anzeigen Wie erhalte ich das Ergebnis einer Abfrage die in einer Variable steckt z.B. @sql = 'select * from t_A'?

3 Antworten

Hello there,

du gehst wahrscheinlich auch falsch vor. Im Query selbst, den du präparierst, verwendest du keine Variablen mehr, sondern Wildcards, in Form von Fragezeichen. Wobei es prinzipiell in deinem Fall möglich ist, da du Elemente wie ne Spalte anwählen willst. Ganz davon abgesehen, dass es wenig Sinn macht, erst alles mit nem Stern zu selektieren und dann nochmal bestimmte Spalten. Das wäre doppelt gemobbelt. Aber deine Syntax passt auch nicht. versuch es mal folgendermaßen:

Zum Beispiel:
SET @spalten = "Spalte1, Spalte2" ;....etc.

@query = Concat('SELECT *', @spalten, ' FROM....);
PREPARE newstmt FROM @query;
EXECUTE newstmt;

Hoffe ich konnte dir helfen.

MfG


Alex


Moin,

ja so in etwas funktioniert es auch bei mir. Ich habe nur das Problem, dass ich nach dem ausführen keine Tabelle angezeigt bekomme. 


Wenn ich also folgenden Code verwende:

@query = Concat('SELECT *', @spalten, ' FROM....);
PREPARE newstmt FROM @query
EXECUTE newstmt

Dann bekomme ich als Ergebnis

EXECUTE newstmt;# Zeilen: 14;

Und keine Tabelle angezeigt.

0
@Alextoexplain

Ja ja, Fehler der nur hier steht. Der Code wird insgesamt ohne Fehlerausgabe durchlaufen.

0

Da musst du spezifischer werden, so kann ich dir nur 'prepared statements' als Stichwort geben: http://www.w3schools.com/php/php_mysql_prepared_statements.asp

Entschuldige, das neue Layout von gutefrage.net hat das Ausfüllen unübersichtlicher gestaltet.

Aktuell habe ich eine Variable mit Abfrageinhalt:

@abfrage = CONCAT('Select * ', @dynamische_spalten, ' from ...)

Nun will ich das ergebnis bekommen. Dafür habe ich: 

PREPARE stmt FROM @SQL_txt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Aber so erhalte ich keine Rückgabe! Da kommt einfach nichts.

0
@Lorwyll

Äh warum heißt deine Abfrage @abfrage und im PREPARE-Statement plötzlich @SQL_text???

0
@Alextoexplain
#Abfrage erstellen:    
SET @SQL_txt = CONCAT('SELECT beratung_id ', @SQL_txt, '
FROM (...) as sumtable GROUP BY beratung_id');

#Abfrage ausführen
PREPARE newstmt FROM @SQL_txt;
EXECUTE newstmt;

Wird ausgeführt, Abfrage in SQL_txt ist richtig und funktioniert. Ich will einfach nur, dass ich nach der Ausführung auch die Tabelle als Ausgabe bekomme

0

Ich habs:

PHP my Admin kann das einfach nicht.

Wenn ich den Befehl via SQL-Manager ausführe bekomme ich auch die Tabelle. PHP my Admin gibt nur den Rowcount zurück..

Gruß und danke für eure Hilfe!


Was möchtest Du wissen?