debugDumpParams()

1. 定义

该方法直接输出一条关于 SQL 预处理语句包含的信息。 成功时返回 TRUE,失败则返回 FALSE。

注:

  • SQL 预处理信息包括:
    • 正在使用的 SQL 查询
    • 绑定参数后的 SQL 查询(如果有的话)
    • 参数的数量
    • 参数在参数列表中的顺序(问号占位符)或参数命名(命名占位符)
    • 参数序号
    • 参数值
    • 正数表示的参数类型等

2. 语法

PDOStatement::debugDumpParams ( void ) : bool

3. 参数说明

该方法不传入任何参数。

4. 示例

<?php

// PDOStatement::debugDumpParams()
// 直接输出一条关于 SQL 预处理语句包含的信息

try {
    $config = ['driver' => 'mysql', 'host' => 'localhost', 'dbname' => 'test', 'charset' => 'utf8', 'user' => 'root', 'pwd' => 'mysql'];
    $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s', $config['driver'], $config['host'], $config['dbname'], $config['charset']);
    $conn = new PDO($dsn, $config['user'], $config['pwd']);
} catch (PDOException $e) {
    error_log($e->getMessage());
    echo $e->getMessage();
}

try {
    // 使用 SELECT 语句返回结果集:2 列
    $sql = "SELECT `name`,`url` FROM `movie`";
    $stmt = $conn->prepare($sql);
    $stmt->execute(); // 执行之后再输出
    $stmt->debugDumpParams();
    /* 输出:(不受是否执行影响)
    SQL: [32] SELECT `name`,`url` FROM `movie`
    Params:  0
    */

    // 使用 DELETE 语句:问号占位符
    $sql = "DELETE FROM `movie` WHERE `name`=?";
    $stmt = $conn->prepare($sql);
    $stmt->bindValue(1, '哪吒之魔童降世');
    $stmt->execute();
    $stmt->debugDumpParams();
    /* 输出:(受绑定语句影响,并输出绑定后的 SQL 语句)
    SQL: [34] DELETE FROM `movie` WHERE `name`=?
    Sent SQL: [56] DELETE FROM `movie` WHERE `name`='哪吒之魔童降世'
    Params:  1
    Key: Position #0:
    paramno=0
    name=[0] ""
    is_param=1
    param_type=2
    */

    // 插入一条正确的数据:命名占位符
    $sql = "INSERT INTO `movie`(`name`) VALUES (:name)";
    $stmt = $conn->prepare($sql);
    $stmt->bindValue(':name', '哪吒之魔童降世');
    $stmt->execute();
    $stmt->debugDumpParams();
    /* 输出:
    SQL: [42] INSERT INTO `movie`(`name`) VALUES (:name)
    Sent SQL: [60] INSERT INTO `movie`(`name`) VALUES ('哪吒之魔童降世')
    Params:  1
    Key: Name: [5] :name
    paramno=-1
    name=[5] ":name"
    is_param=1
    param_type=2
    */
} catch (Exception $e) {
    echo "发生了错误:", $e->getMessage();
}

5. 延展阅读