PEAR DB准备/绑定值

时间:2010-09-30 18:26:11

标签: php pdo prepared-statement pear

似乎无法在不执行查询的情况下打印绑定值。希望在执行之前调试查询。有小费吗?我知道我忽略了一些简单的事情,呃......

$field1 = 'one';
$field2 = 'two';
$field3 = 'three';

$fields  = 'SET ';
$fields .= 'field1 = ?, ';
$fields .= 'field2 = ?, ';
$fields .= 'field3 = ? ';

$vals[] = $field1;
$vals[] = $field2;
$vals[] = $field3;

$sql = 'UPDATE table_name '.$fields.' WHERE id = 123';
$dbh = $db->prepare($sql);

// this binds and executes the query but I would like to print the query with the bind values before executing
$results = $db->execute($dbh, $vals); 

更新:

我会用sprinf做这样的事情

$field1 = 'one';
$field2 = 'two';
$field3 = 'three';

$fields  = 'SET ';
$fields .= 'field1 = %s, ';
$fields .= 'field2 = %s, ';
$fields .= 'field3 = %s ';

$vals[] = $field1;
$vals[] = $field2;
$vals[] = $field3;

$sql = 'UPDATE table_name '.$fields.' WHERE id = 123';

$query = sprintf($sql, $field1, $field2, $field3);
echo "Query before execution: ".$query."<br />";

1 个答案:

答案 0 :(得分:1)

您不能像这样获取查询中的值。服务器处理准备好的查询的方式不同。

你能做的最好的事情是:

echo $sql;
print_r($vals);

Retrieve (or simulate) full query from PDO prepared statement