出于某种原因,当我将以下值传递给我的数据库记录更新函数时,我无法解决问题,它为每一列设置了相同的值。
这是我传递给它的数据:
$_values = array(
'client_fname' => $_POST['client_fname'],
'client_lname' => $_POST['client_lname'],
'client_email' => $_POST['client_email']
);
$_args= array('client_id' => $_id);
$db->dbUpdate('client', $_values, $_args)
它将每一列(client_fname、client_lname、client_email)更新为 $_id 值,而不是发布的值。而且我无法弄清楚我做错了什么:(
这是它在绑定参数之前创建的查询:
UPDATE client SET client_fname=:0, client_lname=:1, client_email=:2 WHERE client_id=:w0
这是功能
public function dbUpdate($_table, $_values, $_args) { //TODO: Fix Function
try {
$query = 'UPDATE '.$_table.' SET ';
$i = 0; foreach ($_values as $_field => $_value) {
if($i == 0) {
$query .= $_field.'=:'.$i;
} else {
$query .= ', '.$_field.'=:'.$i;
}
$i++;
}
$query .= ' WHERE ';
$i = 0; foreach ($_args as $_field => $_value) {
if($i == 0) {
$query .= $_field.'=:w'.$i;
} else {
$query .= ', '.$_field.'=:w'.$i;
}
$i++;
}
$sql = $this->db->prepare($query);
$i = 0; foreach ($_values as $_field => $_value) {
$sql->bindParam(':'.$i, $_value); $i++;
}
$i = 0; foreach ($_args as $_field => $_value) {
$sql->bindParam(':w'.$i, $_value); $i++;
}
if($sql->execute()) {
return true;
} else {
return false;
}
}
catch (PDOException $e) {
print_r($e->errorInfo);
die();
}
}