首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Yii 框架除錯技巧:在頁面直接輸出執行的 SQL 語句

     編輯:PHP 相關知識

使用 YiiDebugToolBar (yiidebugtb)

Yii 內建日誌功能強大,但預設輸出至檔案,不便即時查看。yiidebugtb 提供網頁工具列,顯示 SQL、變數、效能分析,且不干擾頁面佈局。

安裝與設定步驟

  1. 下載 yiidebugtb,解壓至 protected/extensions/yiidebugtb。
  2. 修改 protected/config/main.php,調整 log 元件:
'log' => array(
    'class' => 'CLogRouter',
    'routes' => array(
        array(
            'class' => 'CFileLogRoute',
            'levels' => 'error, warning, trace',
        ),
        // 新增工具列路由
        array(
            'class' => 'XWebDebugRouter',
            'config' => 'alignLeft, opaque, runInDebug, fixedPos, collapsed, yamlStyle',
            'levels' => 'error, warning, trace, profile, info',
            // 'categories' => 'system.db.*', // 只看 DB 相關可取消註解
            'allowedIPs' => array('127.0.0.1', '::1', '192.168.1.[0-5].[0-9]{3}', '你的公網IP'),
        ),
    ),
),
  1. 資料庫連線設定加入兩個關鍵參數:
'db' => array(
    'connectionString' => 'mysql:host=...;dbname=test',
    'emulatePrepare' => true,          // 必須:啟用參數記錄
    'enableParamLogging' => true,      // 必須:記錄綁定參數值
    'username' => '...',
    'password' => '...',
    'charset' => 'utf8',
    // ...
),
  1. 重新整理頁面,右下角會出現工具列,點擊「SQL」分頁即可查看每條查詢的完整語句、參數、執行時間。

常見問題排查

  • 工具列不出現:確認 IP 在 allowedIPs、YII_DEBUG 為 true、runInDebug 選項已開啟。
  • SQL 顯示不完整:確認 enableParamLogging 為 true,且使用 CDbCommand 或 ActiveRecord 執行查詢。
  • 效能影響:僅在開發環境啟用,生產環境請移除或關閉此路由。

進階:手動記錄自定義 SQL

Yii::log($sql, 'trace', 'system.db.CDbCommand');

可將手寫 SQL 也納入工具列顯示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved