2009-08-03T17:39:17
CappuIch möchte gerne sehen wie der tatsächlich ausgeführte Select mittels execute aussah - also das Resultat nach dem Ersetzen von den Prepare-String.
Wenn du das SQL "SELECT * FROM foo WHERE bar = ?" sendest dann wird auch genau dieser String zur Datenbank gesendet, und nichts vorher ersetzt. Die Syntax mit dem Fragezeichen ist eine Datenbankfunktionalität. Keine von DBI oder des DBDs. Diese Funktionalität nennt man "Prepared Statements". Von daher da wird nichts ersetzt oder so.
Einzige Ausnahme, bei ein paar Datenbanken wo die Datenbanken das selber nicht können wird das Teilweise im DBD implementiert. Allerdiengs kann MySQL, PostgreSQL oder auch SQLite Prepared Statements, und die entsprechenden DBDs werden das auch so implementieren.
Daher wird auch "SELECT * FROM foo WHERE bar = ?" gesendet und auf einen extra Datenkanel dann die Daten. Das beste ist wenn du den String und das Array vor dem execute selber einfach ausgibst.
Ansonsten gibt es wohl noch das Tracing.
http://search.cpan.org/~timb/DBI-1.609/DBI.pm#TRAC...
Was er aber genau auspuckt weiß ich nicht, ersetzen sollte er aber wahrscheinlich nicht da es ja auch nicht das ist, was letztendlich gesendet wird, wenn die Datenbank und der DBD Prepared Statements unterstützen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de