是否有一种简单的方法来回显存储在绑定参数中的值。
$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;
答案 0 :(得分:8)
如果您只想“看到”正在发生的事情,那就是PDOStatement->debugDumpParams():
直接在输出中转储预准备语句包含的信息。它将提供正在使用的SQL查询,使用的参数数量(参数),参数列表及其名称,类型(参数类型)作为整数,它们的键名称或位置,值以及查询中的位置(如果这是PDO驱动程序支持的,否则,它将为-1)。
答案 1 :(得分:0)
<?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'