Re: [請益] 如何追蹤程式run過的sql

看板PHP作者 (100px;)時間12年前 (2013/11/28 23:34), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《tas72732002 (蔥頭)》之銘言: : 因開發過程有時會碰到bug,如果可以追蹤下過的sql, : 在debug或語法不小心寫錯等問題都有一些幫助, : 除了自己透過error_log紀錄sql之外, : 想請問各位有沒有什麼工具、套件或各位常用什麼方法來紀錄自己程式run過的sql : 最近想建立一些機制來追朔這方面的問題~ 我是參考php.net上的範例 http://tw1.php.net/manual/en/class.pdo.php#97682 網頁好讀版 http://paste.plurk.com/show/1732077/ class Mysql { private static $db = null; /* * Refenenced by: http://tw1.php.net/manual/en/class.pdo.php#97682 */ public static function get_db(){ if( self::$db ){ return self::$db; } $setting = parse_ini_file("connect.ini"); $user = $setting['username']; $passwd = $setting['password']; $database = 'mysql'; try{ self::$db = new PDO( "mysql:host=localhost;dbname=" . $database, $user, $passwd ); } catch ( PDOException $e ){ print "Error!: " . $e->getMessage() . "<br/>"; die(); } return self::$db; } public static function __callStatic( $name, $args){ $callback = array( self::get_db(), $name ); var_dump($args); // 在這邊記錄sql return call_user_func_array( $callback, $args ); } } example.php: <?php include 'mysql.inc.php'; $db = Mysql::prepare('Hello ptt'); 只要用static的方式使用pdo 就能透過callStatic記錄所有的query了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 27.147.46.251

11/29 02:12, , 1F
code 丟 https://gist.github.com 也不錯
11/29 02:12, 1F

12/02 00:48, , 2F
感謝原po 這個方法非常有幫助
12/02 00:48, 2F
文章代碼(AID): #1IbsAHkq (PHP)
討論串 (同標題文章)
文章代碼(AID): #1IbsAHkq (PHP)