使用准备好的语句和php创建一个函数来执行标准的delete


creating a function to do standard DELETEs using prepared statments and php

我目前正在通过nettuts.com教程建立一个twitter克隆,那里他们有一个从数据库中删除行的功能,他们正在使用查询方法,但我试图将函数转换为一个准备好的语句。但是我得到了Invalid parameter number: parameter was not defined误差。下面是函数

的代码
public function delete($table, $arr){
    $query = "DELETE FROM " . $table;
    $pref = "WHERE ";
    foreach ($arr as $key => $value) {
        $query .= $pref. $key . " = " . ":" . $key;
        $pref = "AND ";
    }
    $query .= ";";
    $result = $this->db->prepare($query);
    $result->execute($arr);
}
$connect = new Model();
$connect->delete("ribbits", array("user_id" => 2,
                                "ribbit" => "trial ribbit"
                                ));
有人能告诉我我做错了什么吗?谢谢你!

当您将数组传递给->execute()时,键需要在它们之前具有:字符(就像它们出现在SQL查询中一样)。

因此,在delete函数中,像这样构建SQL查询:
public function delete($table, $arr){
    $keys = array();
    $values = array();
    foreach($arr as $key => $value){
        $keys[] = $key . " = :" . $key;
        $values[":".$key] = $value;
    }
    $query = "DELETE FROM " . $table . " WHERE " . implode(" AND ", $keys);
    $result = $this->db->prepare($query);
    $result->execute($values);
}