PHP8 PDOStatement::debugDumpParams

2024-03-26 09:50 更新

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

PDOStatement::debugDumpParams — 打印一條 SQL 預(yù)處理命令

說明

public PDOStatement::debugDumpParams(): ?bool

直接打印出一條預(yù)處理語句包含的信息。提供正在使用的 SQL 查詢、所用參數(shù)(Params)的數(shù)目、參數(shù)列表及其鍵名或位置、名稱以及查詢中的位置(如果當前 POD 驅(qū)動不支持,則為 -1),類型(param_type)為整數(shù)且 is_param 為布爾值。

這是調(diào)試函數(shù),在正常輸出的情況下直接輸出數(shù)據(jù)。

小技巧

和直接將結(jié)果輸出到瀏覽器一樣,可使用輸出控制函數(shù)來捕獲當前函數(shù)的輸出,然后(例如)保存到一個 string 中。

只打印此時此刻語句中的參數(shù)。額外的參數(shù)不存儲在語句中,也就不會被輸出。

參數(shù) 

此函數(shù)沒有參數(shù)。

返回值 

返回 null, 或者錯誤時返回 false。

更新日志 

版本說明
7.2.0PDOStatement::debugDumpParams() 現(xiàn)在返回發(fā)送到數(shù)據(jù)庫的 SQL,包括完整的原始查詢(包括替換的占位符及其邊界值)。請注意,這僅在打開模擬預(yù)處理語句時才可用。

示例 

示例 #1 PDOStatement::debugDumpParams() 使用命名參數(shù)的示例

<?php
/* 通過綁定 PHP 變量執(zhí)行一條預(yù)處理語句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();

$sth->debugDumpParams();

?>

以上示例會輸出:

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

示例 #2 PDOStatement::debugDumpParams() 使用未命名參數(shù)的示例

<?php

/* 通過綁定 PHP 變量執(zhí)行一條預(yù)處理語句 */
$calories = 150;
$colour = 'red';
$name = 'apple';

$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindValue(2, $colour, PDO::PARAM_STR);
$sth->execute();

$sth->debugDumpParams();

?>

以上示例會輸出:

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

參見 

  • PDO::prepare() - 預(yù)處理要執(zhí)行的語句,并返回語句對象
  • PDOStatement::bindParam() - 綁定一個參數(shù)到指定的變量名
  • PDOStatement::bindValue() - 把一個值綁定到一個參數(shù)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號