PHP code example of deepeloper / pdo-debugging
1. Go to this page and download the library: Download deepeloper/pdo-debugging library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
deepeloper / pdo-debugging example snippets
use deepeloper\PDO\PDOExcavated;
$pdo = new PDOExcavated(
$dsn,
$username,
$password,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDOExcavated::ATTR_DEBUG => [],
]
);
$pdo->beginTransaction();
$stmt = $pdo->query("SELECT 1");
$stmt->fetch();
$pdo->commit();
$pdo->beginTransaction();
$stmt = $pdo->prepare("SELECT ?");
$stmt->bindValue(1, 100500, PDO::PARAM_INT);
$stmt->execute();
$stmt->fetch();
$pdo->rollBack();
echo "Global benchmarks: ";
print_r($pdo->getBenchmarks());
echo "\nStatement benchmarks: ";print_r($stmt->getBenchmarks());
echo sprintf("\nLast query: %s\n", $stmt->getLastExecutedQuery());
use deepeloper\PDO\LoggerInterface;
use deepeloper\PDO\PDOExcavated;
class Logger implements LoggerInterface
{
/**
* Logs message.
*
* @param string $message
* @return void
*/
public function log($message, array $scope)
{
echo "$message\n";
}
}
$dsn = "...";
$username = "...";
$password = "...";
$logger = new Logger();
$pdo = new PDOExcavated(
$dsn,
$username,
$password,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDOExcavated::ATTR_DEBUG => [
'logger' => $logger,
/**
* Defaults.
*
* @see deepeloper\PDO\ExcavatingTrait::$debuggingOptions
*/
'format' => [
'timeStamp' => "Y-m-d H:i:s",
'count' => "%03d",
'precision' => "%.05f",
'call' => "[ %TIME_STAMP% ] [ %DSN%;user=%USER_NAME% ] [ %EXECUTION_TIME% ] [ CALL ] [ %SOURCE%(%ARGS%) ]",
'query' => "[ %TIME_STAMP% ] [ %DSN%;user=%USER_NAME% ] [ %EXECUTION_TIME% ] [ QUERY ] [ #%COUNT% ] [ %SOURCE% ] [ %QUERY% ]",
],
'sources' => [
],
],
]
);
$pdo->exec("UPDATE `test` SET `foo` = 0");
$stmt = $pdo->query("SELECT 1");
$stmt->fetch();
$stmt = $pdo->prepare("SELECT ?");
$stmt->bindValue(1, 100500, PDO::PARAM_INT);
$stmt->execute();
'sources' => [
"/^PDOExcavated::(?:exec|query)/",
"/^PDOStatementExcavated::execute/",
],
use deepeloper\PDO\LoggerInterface;
use deepeloper\PDO\PDOExcavated;
use deepeloper\PDO\PDOStatementExcavated;
class class PDOExcavatedExtended extends PDOExcavated
{
/**
* Allows to customize log message scope.
*
* @param array &$scope
* @return void
* @see ExcavatingTrait::after()
*/
protected function scope(array &$scope)
{
$scope['FOO'] = __METHOD__;
}
/**
* Prepares query for logging.
*
* @param string &$query
* @return void
* @see ExcavatingTrait::after()
*/
protected function prepareQueryForLogging(&$query)
{
// Modify query here.
}
/**
* Method used to replace PDOStatementExcavated by possible child.
*
* @param string $template
* @param PDOStatementExcavated $stmt
* @return PDOStatementExcavatedExtended
* @see self::getResultStatement()
*/
protected function getStatement($template, PDOStatement $stmt)
{
return new PDOStatementExcavatedExtended($template, $this, $stmt);
}
}
class PDOStatementExcavatedExtended extends PDOStatementExcavated
{
/**
* Allows to customize log message scope.
*
* @param array &$scope
* @return void
* @see ExcavatingTrait::after()
*/
protected function scope(array &$scope)
{
$scope['FOO'] = __METHOD__;
}
/**
* Prepares query for logging.
*
* @param string &$query
* @return void
* @see ExcavatingTrait::after()
*/
protected function prepareQueryForLogging(&$query)
{
// Modify query here.
}
}
class Logger implements LoggerInterface
{
/**
* Logs message.
*
* @param string $message
* @param array $scope
* @return void
*/
public function log($message, array $scope)
{
echo "$message\n";
}
}
$dsn = "...";
$username = "...";
$password = "...";
$logger = new Logger();
$pdo = new PDOExcavatedExtended(
$dsn,
$username,
$password,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDOExcavated::ATTR_DEBUG => [
'logger' => $logger,
'format' => [
'call' => "%FOO%",
'query' => "%FOO%",
],
],
]
);
$pdo->exec("UPDATE `test` SET `bar` = ''");
$pdo->query("SELECT 1");
$stmt = $pdo->prepare("SELECT ?, ?");
$stmt->bindValue(1, 100500, PDO::PARAM_INT);
$stmt->bindValue(2, "blah");
$stmt->execute();