自从我搬到PDO以来,这让我非常沮丧

我有这样的事情:

$sql = "select * FROM $table where id=:id";
$this->stmt = $this->dbh->prepare($query);
$this->stmt->bindValue($param, $value, $type);
bindValue(:id => $this->user_id);
$this->stmt->execute();


现在选择运行,什么都不会中断,但是我没有得到预期的结果,如果我回显$ this-> stmt,我会得到这样的东西:

PDOStatement Object ( [queryString] => UPDATE `users`
SET user_active= :user_active, user_activation_hash= :user_activation_hash
WHERE user_id = :user_id AND user_activation_hash = :verification_code )


现在看起来不错,所以问题很可能与传递的值有关,因此与其传递数字,不如我弄乱了引号,并以字符串形式传递了$ id,并且它没有求值该变量,但是我找不到解决办法,看看有什么实际的语句值是。必须有一种更简单的方法,使用标准mysql非常简单,只需将查询分配给变量并回显它,或者使用mysql_error或死掉?

首先我尝试了debugDumpParams,它只返回以下内容:

UPDATE `users` SET user_active= :user_active, user_activation_hash= :user_activation_hash WHERE user_id = :user_id AND user_activation_hash = :verification_code Params: 4 Key: Name: [12] :user_active paramno=-1 name=[12] ":user_active" is_param=1 param_type=2 Key: Name: [21] :user_activation_hash paramno=-1 name=[21] ":user_activation_hash" is_param=1 param_type=2 Key: Name: [8] :user_id paramno=-1 name=[8] ":user_id" is_param=1 param_type=2 Key: Name: [18] :verification_code paramno=-1 name=[18] ":verification_code" is_param=1 param_type=2


在猜测没有调试转储值或类似的东西时,我要调试的值

最佳答案

使用$stmt->debugDumpParams();

关于php - PHP执行后回显查询的ACTUAL语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18414803/

10-13 02:05