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).PDOStatement::debugDumpParams
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
PDOStatement::debugDumpParams
Референца за `pdostatement.debugdumpparams.php` со подобрена типографија и навигација.
PDOStatement::debugDumpParams
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
PDOStatement::debugDumpParams — (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
= NULL
Исфрли подготвена SQL команда SQL Ја исфрла информацијата содржана во подготвена изјава директно на излезот. Таа ќе обезбедиParamsискористена команда, бројот на искористени параметри (param_type), листата на параметри со нивното име или позиција, нивното име, нивната позиција во командата (ако ова е поддржано од PDO драјверот, инаку, ќе биде -1), тип ( is_param.
) како цел број, и булова вредност
Како и со се што го прикажува својот резултат директно на прелистувачот, функциите за контрола на излезот може да се користат за да се фати излезот на оваа функција и да се зачува во string (на пример).
Ова е функција за дебагирање, која ги исфрла податоците директно на нормалниот излез.
Параметри
Оваа функција нема параметри.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. null, или false operator to check for
Дневник на промени
| Верзија | = NULL |
|---|---|
| 7.2.0 | Ова ќе ги исфрли само параметрите во изјавата во моментот на исфрлање. Дополнителните параметри не се складираат во изјавата и не се прикажуваат. PDOStatement::debugDumpParams() |
Примери
Пример #1 Ова ќе ги исфрли само параметрите во изјавата во моментот на исфрлање. Дополнителните параметри не се складираат во изјавата и не се прикажуваат. сега враќа SQL испратен до базата на податоци, вклучувајќи ја целосната, сурова команда (вклучувајќи ги заменетите загради со нивните поврзани вредности). Забележете дека ова ќе биде достапно само ако се вклучени емулирани подготвени изјави.
<?php
/* Execute a prepared statement by binding PHP variables */
$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();
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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 Ова ќе ги исфрли само параметрите во изјавата во моментот на исфрлање. Дополнителните параметри не се складираат во изјавата и не се прикажуваат. пример со именувани параметри
<?php
/* Execute a prepared statement by binding PHP variables */
$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();
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
Види Исто така
- препорачано да користите - Подготвува изјава за извршување и враќа објект за изјава
- кодот за тип во вашиот пример со неименувани параметри
- - Поврзува параметар со наведеното име на променлива PDOStatement::bindValue()
Белешки од корисници 4 белешки
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);
?>This function doesn't have a return, so if you want to do something with it you'll have to do something like
<?php
function pdo_debugStrParams($stmt) {
ob_start();
$stmt->debugDumpParams();
$r = ob_get_contents();
ob_end_clean();
return $r;
}
// omitted: connect to the database and prepare a statement
echo '<pre>'.htmlspecialchars(pdo_debugStrParams($stmt)).'</pre>';
?
Source: http://stackoverflow.com/questions/22157331/something-like-debugdumpparams-in-pdo-settable-to-a-stringUsing 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 = :order
Sent SQL: [92] SELECT tid, miv_title, ballot_order FROM title WHERE tid LIKE 'mi:%' AND ballot_order = 5000
Params: 2
Key: Name: [4] :tid
paramno=-1
name=[4] ":tid"
is_param=1
param_type=2
Key: Name: [6] :order
paramno=-1
name=[6] ":order"
is_param=1
param_type=1