bindParam插入表所在的位置

时间:2013-01-27 20:51:52

标签: php pdo

我已经在这个问题上编了几个小时,所以我觉得我在这里错过了一些非常简单的东西,但我似乎无法找到它。

我收到这两个错误

  

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:参数号无效:绑定变量数与第77行上的令牌数不匹配

     

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:参数号无效:绑定变量数与第79行上的令牌数不匹配

public function resetPassword($password, $email){
    $rst    =   $this->db->prepare("insert into users (password) values (?) where email=? ");
    $rst->bindParam('?', $password);
    $rst->bindParam('?', $email);
    $rst->execute();

    if($rst->execute()){
        return "Password changed!"; 
    }
    else echo "Could not change password.";
}

我忘记了什么吗?

1 个答案:

答案 0 :(得分:1)

当使用问号作为占位符时,您将数组发送到execute方法,如下所示:$rst->execute(array('placeholder1value', 'placeohlder2value'));

但是,如果你想使用命名占位符,你可以使用bindParam / bindValue,如下所示:

$stmt = $pdo->prepare('INSERT INTO table (key1, key2) VALUES (:key1, :key2)');
$stmt->bindValue(':key1', 'somevalue', PDO::PARAM_STR);
$stmt->bindValue(':key1', 3532, PDO::PARAM_INT);
$stmt->execute();

请阅读bindParambindValue

之间的区别

另外请注意,您的SQL查询没有意义,您的意思是UPDATE吗?