我正在PDO
使用sqlsrv
驱动程序。我想打印出通过__construct
中的初始化连接传递的所有查询。
我的设置如下;
public function __construct() {
try{
$this->connRead = new PDO( "sqlsrv:server=" . DB_SERVER . "; Database =" . DB_NAME, DB_USER_READ, DB_PASSWORD_READ);
$this->connRead->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){ echo 'Connection failed: ' . $e->getMessage(); }
}
public function __destruct() { $this->connRead = null; $this->connWrite= null; }
然后我会发出请求/电话;
$sSQL = "SELECT foo FROM Table"
$st = $this->connRead->prepare( $sSQL );
$st->execute();
在加载页面时,我希望能够以纯文本格式将所有使用$this->connRead
的查询打印到浏览器中。有可能这样做吗?
答案 0 :(得分:0)
您可以使用:debugDumpParams,这就是PDO可以为您提供的所有功能。
您将收到此声明的声明和变量。
此外,您只能收到有关特定声明而非连接的此信息。
没有办法接收清晰的SQL,你可以收到类似的东西:
SELECT :date AS `date`
如果您的陈述文本太长 - 它将被截断,see。
但是所有现代框架都与之共存......
答案 1 :(得分:0)
我发现的解决方法是创建一个Class(DataHandler)来处理任何数据库调用。它通过调用类或页面中的连接字符串进行初始化。
然后可以查询查询;
$oDH->RunCommand($sSQL, [params])
因为所有查询都是通过DataHandler
发送的,所以我可以记录我选择的任何内容。即执行时间,所有查询都在页面上运行,绑定了params等。