PDOStatement::debugDumpParams

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)

PDOStatement::debugDumpParams Vuelca un comando preparado de SQL

Descripción

public PDOStatement::debugDumpParams(): void

Vuelca la información contenida en una sentencia preparada directamente en la salida. Proporcionará la consulta SQL en uso, el número de parámetros usados (Params), la lista de parámetros con su nombre de clave o posición, su nombre, su posición en la consulta (si lo admite el controlador de PDO, si no, será -1), el tipo (param_type) como entero, y un valor booleano is_param.

Esta es una función de depuración que vuelca directamente los datos en la salida habitual.

Sugerencia

Como con todo lo que genera un resultado directamente en el navegador, se pueden utilizar las funciones de control de salida para capturar el resultado de esta función y guardarlo, por ejemplo, en un string.

Solamente volcará los parámetros de la sentencia en el momento del vuelco. Los parámetros extra no son almacenados en la sentencia, y tampoco son mostrados.

Valores devueltos

No devuelve ningún valor.

Ejemplos

Ejemplo #1 Ejemplo de PDOStatement::debugDumpParams() con parámetros con nombre

<?php
/* Ejecutar una sentencia preparada vinculando variables de PHP */
$calorías = 150;
$color = 'red';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour'
);
$gsent->bindParam(':calories', $calorías, PDO::PARAM_INT);
$gsent->bindValue(':colour', $color, PDO::PARAM_STR, 12);
$gsent->execute();

$gsent->debugDumpParams();

?>

El resultado del ejemplo sería:

SQL: [96] SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour
Params:  2
Key: Name: [9] :calories
paramno=-1
name=[9] ":calories"
is_param=1
param_type=1
Key: Name: [7] :colour
paramno=-1
name=[7] ":colour"
is_param=1
param_type=2

Ejemplo #2 Ejemplo de PDOStatement::debugDumpParams() con parámetros sin nombre

<?php

/* Ejecutar una sentencia preparada vinculando variables de PHP */
$calorías = 150;
$color = 'red';
$name = 'apple';

$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?'
);
$gsent->bindParam(1, $calorías, PDO::PARAM_INT);
$gsent->bindValue(2, $color, PDO::PARAM_STR);
$gsent->execute();

$gsent->debugDumpParams();

?>

El resultado del ejemplo sería:

SQL: [82] SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?
Params:  2
Key: Position #0:
paramno=0
name=[0] ""
is_param=1
param_type=1
Key: Position #1:
paramno=1
name=[0] ""
is_param=1
param_type=2

Ver también

add a note

User Contributed Notes 4 notes

up
70
thefox
12 years ago
This function doesn't print parameter values despite the documentation says it does. See https://bugs.php.net/bug.php?id=52384 (filed back in 2010).
up
29
mark at manngo dot net
11 years ago
As noted, this doesn’t actually simply print the prepared statement with data to be executed.For trouble shooting purposes, I find the following useful:<?php    function parms($string,$data) {        $indexed=$data==array_values($data);        foreach($data as $k=>$v) {            if(is_string($v)) $v="'$v'";            if($indexed) $string=preg_replace('/\?/',$v,$string,1);            else $string=str_replace(":$k",$v,$string);        }        return $string;    }    //    Index Parameters        $string='INSERT INTO stuff(name,value) VALUES (?,?)';        $data=array('Fred',23);    //    Named Parameters        $string='INSERT INTO stuff(name,value) VALUES (:name,:value)';        $data=array('name'=>'Fred','value'=>23);    print parms($string,$data);?>
up
16
Lucas
9 years ago
This function doesn't have a return, so if you want to do something with it you'll have to do something like<?phpfunction pdo_debugStrParams($stmt) {  ob_start();  $stmt->debugDumpParams();  $r = ob_get_contents();  ob_end_clean();  return $r;}// omitted: connect to the database and prepare a statementecho '<pre>'.htmlspecialchars(pdo_debugStrParams($stmt)).'</pre>';?Source: http://stackoverflow.com/questions/22157331/something-like-debugdumpparams-in-pdo-settable-to-a-string
up
1
wchasroth at gmail dot com
8 months ago
Using PHP 8.3 and MySQL 8.2, debugDumpParams() DOES display the "raw" SQL, with parameter values.E.g. $sql = "SELECT tid, miv_title, ballot_order FROM title WHERE tid LIKE :tid AND ballot_order = :order";$stm = $pdo->prepare($sql);$stm->bindValue(":tid",   "mi:%");$stm->bindValue(":order", 5000, PDO::PARAM_INT);$stm->execute();$stm->debugDumpParams();... displays ...SQL: [92] SELECT tid, miv_title, ballot_order FROM title WHERE tid LIKE :tid AND ballot_order = :orderSent SQL: [92] SELECT tid, miv_title, ballot_order FROM title WHERE tid LIKE 'mi:%' AND ballot_order = 5000Params:  2Key: Name: [4] :tidparamno=-1name=[4] ":tid"is_param=1param_type=2Key: Name: [6] :orderparamno=-1name=[6] ":order"is_param=1param_type=1
To Top