使用PHP PDO显示bindParam的值

时间:2010-09-07 06:52:57

标签: php pdo

是否有一种简单的方法来回显存储在绑定参数中的值。

$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;

2 个答案:

答案 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'