Db::debug()
\nn\t3::Db()->debug($query = NULL, $return = false);
Debug of the QueryBuilder statement.
Outputs the complete, compiled query as a readable string, as it is later executed in the database
executed later in the database e.g. SELECT FROM fe_users WHERE ...
// Output statement directly in the browser
\nn\t3::Db()->debug( $query );
// Return statement as a string, do not output automatically
echo \nn\t3::Db()->debug( $query, true );
Copied!
@param mixed $query
@param boolean $return
@return string
Source Code
public function debug ( $query = null, $return = false )
{
if( !($query instanceof QueryBuilder) ) {
$queryParser = \nn\t3::injectClass(Typo3DbQueryParser::class);
$query = $queryParser->convertQueryToDoctrineQueryBuilder($query);
}
$dcValues = $query->getParameters();
$dcValuesFull = [];
foreach ($dcValues as $k=>$v) {
if (is_array($v)) {
foreach ($v as &$n) {
if (!is_numeric($n)) {
$n = "'" . addslashes($n) . "'";
}
}
$v = join(',', $v);
} else if (!is_numeric($v)) {
$v = "'" . addslashes($v) . "'";
}
$dcValuesFull[":{$k}"] = $v;
}
// Sicherstellen, dass zuerst `:value55` vor `:value5` ersetzt wird
uksort($dcValuesFull, function($a, $b) {
return strlen($a) > strlen($b) ? -1 : 1;
});
$str = $query->getSQL();
$str = str_replace( array_keys($dcValuesFull), array_values($dcValuesFull), $str );
if (!$return) echo $str;
return $str;
}
Copied!