PHP打印发送到MSSQL的所有查询

时间:2016-01-25 09:26:30

标签: php mysql sql pdo

我正在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的查询打印到浏览器中。有可能这样做吗?

2 个答案:

答案 0 :(得分:0)

您可以使用:debugDumpParams,这就是PDO可以为您提供的所有功能。
您将收到此声明的声明和变量。
此外,您只能收到有关特定声明而非连接的此信息。
没有办法接收清晰的SQL,你可以收到类似的东西:

SELECT :date AS `date`

如果您的陈述文本太长 - 它将被截断,see

但是所有现代框架都与之共存......

答案 1 :(得分:0)

我发现的解决方法是创建一个Class(DataHandler)来处理任何数据库调用。它通过调用类或页面中的连接字符串进行初始化。

然后可以查询查询; $oDH->RunCommand($sSQL, [params])

因为所有查询都是通过DataHandler发送的,所以我可以记录我选择的任何内容。即执行时间,所有查询都在页面上运行,绑定了params等。