【发布时间】:2011-06-21 22:09:53
【问题描述】:
大家好,我最近一直在尝试 PDO,目前正在尝试为我正在进行的项目编写一个基本的数据库类。但是,我在尝试编写使用准备好的语句执行更新查询的函数时遇到了问题。
function update($tabledata, $table, $where){
$fields = array_keys($tabledata);
$data = array_values($tabledata);
$fieldcount = count($fields);
$wherefield = implode(array_keys($where));
$whereval = implode(array_values($where));
$this->query = "UPDATE $table SET ";
$this->query .= '(' . implode($fields, ' = ?, ') . ' = ?)';
$this->query .= " WHERE $wherefield = '$whereval'";
$this->query = $this->_clean($this->query);
$stmt = $this->conn->prepare($this->query) or die('Problem preparing query');
$stmt->execute($data)or die('Problem executing query');
}
它的使用示例如下:
$usertbl = 'users';
$date = date("Y-m-d");
$updatedata = array(
'Username' => 'test',
'Password' => 'unknown',
'Email' => 'email',
);
$where = array(
'Username' => 'user'
);
$Database->update($updatedata,$usertbl,$where);
这会返回以下错误:
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]:语法错误或 访问冲突:1064 你有一个 SQL 语法错误;检查 与您的 MySQL 对应的手册 正确语法的服务器版本 在'(用户名='测试',密码附近使用 = 'unknown', Email = 'email') WHERE Username = 'use' at line 1
任何帮助将不胜感激。
【问题讨论】:
标签: php mysql pdo prepared-statement