25/02
2016
A PDOStatement for develop
[Japanese], (*2)
koriym/dev-pdo-statement log following information to help your sql inspection., (*3)
EXPLAIN
query.SHOW WARNINGS
query.AttachDevPdoStatement
class to the target $pdo
., (*4)
use Koriym\DevPdoStatement\DevPdoStatement; use Koriym\DevPdoStatement\Logger; $pdo->setAttribute(\PDO::ATTR_STATEMENT_CLASS, [DevPdoStatement::class, [$pdo, new Logger]]);
Then $pdo
start to log as following on each query., (*5)
time:0.00035190582275391 query: INSERT INTO user(id, name) VALUES (99, 'koriym99') time:0.00020503997802734 query: SELECT id, name FROM user where id > 80 warnings:[ { "Level": "Note", "Code": "1003", "Message": "\/* select#1 *\/ select `tmp`.`user`.`id` AS `id`,`tmp`.`user`.`name` AS `name` from `tmp`.`user` where (`tmp`.`user`.`id` > 80)" } ] explain :[ { "id": "1", "select_type": "SIMPLE", "table": "user", "partitions": null, "type": "ALL", "possible_keys": null, "key": null, "key_len": null, "ref": null, "rows": "100", "filtered": "33.33", "Extra": "Using where" } ]
You can implement custom condition for logging or choose your favorite logger., (*6)
use Koriym\DevPdoStatement\LoggerInterface; class MyPsr3Logger implements LoggerInterface { /** * {@inheritdoc} */ public function logQuery($query, $time, array $explain, array $warnings) { // log or throw exception in your custom condition. } }
php doc/demo/run.php