2010-09-30 93 views
0

只是不能执行查询来打印绑定值。在执行前寻找调试查询。有小费吗?我知道我可以俯瞰简单的东西,唉......PEAR DB准备/绑定值

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

UPDATE:

我会做这样的事情与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 />"; 
+0

这是场!!!!! – Galen 2010-09-30 18:30:02

+0

没有$ db-> field(),你能解释一下吗? – 2010-09-30 18:41:35

+0

'$ feilds'的命名_is_一致,尽管混乱。 – Wrikken 2010-09-30 18:46:47

回答

1

你不能进去的值这样的查询。服务器处理预备查询的方式不同。

你可以做的最好的是:

echo $sql; 
print_r($vals); 

Retrieve (or simulate) full query from PDO prepared statement

+0

不,我知道我可以单独打印它们,我想打印查询,因为它会被执行,然后我执行 – 2010-09-30 18:40:41

+0

这就是为什么我说你不能这样做 – Galen 2010-09-30 18:51:08

+0

我可以混合PDO和梨?像$ dbh-> bindValue(':field1',$ field1,PDO :: PARAM_STR); – 2010-09-30 18:59:38