Php PEAR DB准备/绑定值
在不执行查询的情况下,似乎无法打印绑定的值。希望在执行前调试查询。有什么建议吗?我知道我忽略了一些简单的事情,呃Php PEAR DB准备/绑定值,php,pdo,prepared-statement,pear,Php,Pdo,Prepared Statement,Pear,在不执行查询的情况下,似乎无法打印绑定的值。希望在执行前调试查询。有什么建议吗?我知道我忽略了一些简单的事情,呃 $field1 = 'one'; $field2 = 'two'; $field3 = 'three'; $fields = 'SET '; $fields .= 'field1 = ?, '; $fields .= 'field2 = ?, '; $fields .= 'field3 = ? '; $vals[] = $field1; $vals[] = $field2; $
$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 />";
$field1='one';
$field2='two';
$field3='3';
$fields='SET';
$fields.='field1=%s';
$fields.='field2=%s';
$fields.='field3=%s';
$VAL[]=$field1;
$VAL[]=$field2;
$VAL[]=$field3;
$sql='updatetable_name'.$fields.'WHERE id=123';
$query=sprintf($sql、$field1、$field2、$field3);
echo“执行前查询:“.$Query.”
;
您不能像这样获取查询中的值。服务器处理准备好的查询的方式是不同的
你所能做的就是:
echo $sql;
print_r($vals);
不,我知道我可以将它们打印在单独的行中,我想在执行之前按执行的方式打印查询这就是为什么我说你不能这样做我可以混合PDO和Pear吗?类似于$dbh->bindValue(':field1',$field1,PDO::PARAM_STR);看起来好像有个虫子。没有真正的解决方案来满足我的要求没有$db->field(),你能解释一下吗?
$feilds
的命名是一致的,尽管很混乱。废话,打字错误,啊!!!sry快速复制/粘贴