使用 PHP PDO 显示 bindParam 的值
Posted
技术标签:
【中文标题】使用 PHP PDO 显示 bindParam 的值【英文标题】:Display value of bindParam using PHP PDO 【发布时间】:2011-04-09 01:16:58 【问题描述】:有没有一种简单的方法来回显存储在绑定参数中的值。
$sql ="call storedproc(:firstname, :lastname)";
$stmt = $this->DBH->prepare($sql);
$stmt->bindParam(':firstname', $fname);
$stmt->bindParam(':lastname', $lname);
//I want to do this
echo $stmt->firstname;
$stmt->execute;
【问题讨论】:
【参考方案1】:如果你只想“看看”发生了什么,那么PDOStatement->debugDumpParams():
将准备好的语句包含的信息直接转储到输出中。它将提供正在使用的 SQL 查询、使用的参数数量 (Params)、参数列表,以及它们的名称、类型 (paramtype) 作为整数、它们的键名或位置、值和查询中的位置(如果 PDO 驱动程序支持,否则为 -1)。
【讨论】:
需要注意的是,目前这个函数不会打印存储在 params 中的值而不应用 php Bug #52384 bugs.php.net/…的补丁。 上面的引用已经在php手册中更新了。从中删除的“价值”,最重要的部分...... :-(【参考方案2】:<?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;
$string='INSERT INTO stuff(name,value) VALUES (?,?)';
$data=array('Fred',23);
$string='INSERT INTO stuff(name,value) VALUES (:name,:value)';
$data=array('name'=>'Fred','value'=>23);
print parms($string,$data);
$update = "update registration";
$update .= " set status=:statusid";
$update .= " where refid=:refid";
$stmt = $db->prepare($update);
$data=array('statusid' => $statusid,'refid' => $refid);
echo parms($update,$data); // checking bind values
exit;
$stmt->execute(array ('statusid' => $statusid,'refid' => $refid));
?>
//输出
update registration set status='all' where refid='45'
【讨论】:
以上是关于使用 PHP PDO 显示 bindParam 的值的主要内容,如果未能解决你的问题,请参考以下文章
PHP PDO::bindParam() 数据类型.. 它是如何工作的?
PHP PDO 与 bindParam 与 bindValue? [复制]
PHP PDO bindParam() 和 MySQL BIT