aid*_*dan 17 mysql sql perl prepared-statement dbi
我正在使用Perl的DBI模块.我使用占位符准备一个语句,然后执行查询.
是否可以打印出执行的最终查询而无需手动转义参数并将其放入占位符?
谢谢
Sin*_*nür 16
请参阅DBI中的跟踪.以下工作使用DBD::SQLite但产生了大量输出:
$dbh->trace($dbh->parse_trace_flags('SQL|1|test'));
Run Code Online (Sandbox Code Playgroud)
输出:
<- prepare('SELECT ... FROM ... WHERE ... = ?')= DBI::st=HASH(0x21ee924) at booklet-excel.pl line 213
<- execute('Inhaler')= '0E0' at booklet-excel.pl line 215
等等
您可以将自己的过滤器插入到跟踪流中以仅保留prepares.
Upe*_*dra 10
您可以使用Statement属性对预准备语句进行调试打印.可以使用"语句句柄"或"数据库句柄"访问它.
print $sth->{Statement} # with a statement handle
print $dbh->{Statement} # with a database handle
Run Code Online (Sandbox Code Playgroud)
这适用于DBD::mysql禁用服务器端准备(默认)的情况:
$ DBI_TRACE=2 perl your-script-here
Run Code Online (Sandbox Code Playgroud)
它会将每个语句打印两次,一次在绑定参数之前,一次在绑定参数之后。后者将是格式良好的 SQL,您可以自己运行。
还有一个模块DBI::Log,它仅打印 SQL 语句(没有其他调试噪音)以及可选的计时信息和调用者堆栈跟踪。这真的很有用。
| 归档时间: |
|
| 查看次数: |
20980 次 |
| 最近记录: |