PHP 5.4.31 Released

PDOStatement::debugDumpParams

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

PDOStatement::debugDumpParams Vuelca un comando preparado de SQL

Descripción

public void 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 sus nombres, su tipo (paramtype) como un entero, sus nombres de clave o posición, y la posición en la consulta (si lo admite el controlador de PDO, si no, será -1).

Esta es una función de depuración, que vuelca directamente los dotos 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íasPDO::PARAM_INT);
$gsent->bindValue(':colour'$colorPDO::PARAM_STR12);
$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íasPDO::PARAM_INT);
$gsent->bindValue(2$colorPDO::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 add a note

User Contributed Notes 3 notes

up
11
thefox
1 year 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
0
mark at manngo dot net
9 months 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
0
mattspopcorn at gmail dot com
4 years ago
It's not you, in PHP 5.2.6 and close versions this has an infinite loop bug.  Upgrade to the latest php where it has been fixed.
To Top