SQL Statement anzeigen

Moin,

wie bekomme ich das zusammengesetzte, ausgeführte SQL Statement?

Bsp:

 100, 
];

$sql = "select * from table where id=:id;";
$result = Shopware()->Db()->fetchRow($sql, $values);
?>

Grüße, 
Torben

Hi, ich verstehe deine Frage nicht richtig. Was möchtest du genauer wissen ? Möchtest du die Results von dein SQL oder möchtest du den SQL ausführen??

Ich möchte das ausgeführte Statement sehen. In dem Beispiel ist das ja recht einfach:

select * from table where id=100;

Aber wenn man mehrere Variablen übergibt wir das halt schnell unübersichtlich. 

Also, ich verstehe immer noch nicht was du meinst mit “sehen” willst du das in Frontend sehen oder ist das allgemein Code Style ??

Wenn dein SQL Statement groß wird dann kannst du das in mehrere linien teilen:

 

Am sonsten kann ich dir nicht weiterhelfen, weil ich durch “sql sehen” nicht verstehen kann wie du das eigentlich sehen willst, weil im code siehst ja den SQL.

Ich möchte die SQL Anweisung sehen die auf der DB ausgeführt wird. Also inklusive eingefügten Variablen aus dem Values Array.

Er möchte den query mit seinen ausgefüllten Variablen sehen - nicht jedoch das Ergebnis. So verstehe ich das.

 

Das eben dran steht “select * from table where id=100;” und nicht “select * from table where id=:id;”;

 

1 Like

Die beste Variante wäre wenn du den General Log von MySQL aktivierst und dann da rein guckst was für SQLs wurden ausgeführt und mit welchen Werten usw.

In Shopware habe ich leider nichts gefunden der sowas macht, habe aber ein workaround gefunden.

 

 

Das zeigt mir dann das:

 

 

Ich habe jetzt verstanden was du meinst, aber wie gesagt ich konnte nichts in den Shopware db finden der das für dich machen konnte.

 

Yeay, sehr geil, ganau das war mein Ziel, Danke…

1 Like

Werden die übergeben Values eigentlich noch auf Injections geprüft oder geht das nur mit dem QueryBuilder? 

@Torben Schmoll schrieb:

Werden die übergeben Values eigentlich noch auf Injections geprüft oder geht das nur mit dem QueryBuilder? 

Nein sie werden nicht. Lese dir die doku von strtr() auf phpmanuals. Es ist nur ein string replacement. Damit du genau den Query Sehen kannst wie es von mysql ausgeführt wird musst du dieses General Log verwenden und dann in der Log nach diesen Query suchen, sonst weiß ich keine andere möglichkeit da eigentlich so eine funktion niemand braucht. 

Das ststr() das nicht macht ist mir schon klar. Aber Zend wird doch die übergebenen Values dementsprechend prüfen.