2016-01-25 21 views
1

我使用PDOsqlsrv驅動程序。我想打印出所有通過__construct初始化的連接查詢。PHP打印發送給MSSQL的所有查詢

我的設置如下;

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

可能的重複:http://stackoverflow.com/questions/5299669/how-to-see-query-history-in-sql-server-management-工作室 – feeela

回答

0

我發現soloution是創建一個類(DataHandler的)來處理任何數據庫調用。它在調用類或頁面中使用連接字符串進行初始化。

查詢然後可以這樣形成; $oDH->RunCommand($sSQL, [params])

因爲所有的查詢都通過DataHandler發送,我可以登錄我的任何選擇。即執行時間,所有查詢都在頁面上運行,綁定參數等。

0

您可以使用:debugDumpParams,這就是PDO可以爲您提供的全部內容。
您將收到此語句的語句和變量。
此外,您只能收到此信息,僅用於特定聲明而非連接。
而且也沒有辦法接收清晰的SQL,你可以得到這樣的:

SELECT :date AS `date` 

而如果當你的語句文本將是太長 - 它會被截斷,see

但是,所有現代的框架與它生活......

+0

感謝參考'debugDumpParams'會有用。恥辱有沒有什麼可以收集查詢發送:( – atoms