当我尝试更新我的值时,它给了我以下错误:SQLSTATE [HY093]:无效的参数编号:参数未定义。 这只发生在特殊字符上,例如:(hello;)而不是(hello) 由于某些原因,它无法找到包含特殊字符的值,我只能插入它们 而不是将其从数据库中更新或删除。pdo中的特殊字符
而数据库已经设置在utf8上。
public function update($data, $key, $value) {
try {
$this->query = 'UPDATE ' . $this->table . ' SET ';
array_walk($data, function($index, $key) {
$this->query .= $key . ' = ' . ':' . $key . ', ';
});
$this->query = rtrim($this->query, " ,");
$this->query .= " WHERE $key = :$value";
$stmt = $this->db->prepare($this->query);
$stmt->execute(array_merge($data, array($value => $value)));
return true;
} catch(PDOException $e) {
echo $e->getMessage();
}
}
一个例子,我如何使用它:
if(isset($oldValue, $newValue)) {
$data['database']->update(array("name" => $newValue), "name", $oldValue);
}
数组是给一个键和一个新的值更新和逗号后是搜索表中的“名称”的价值。
如果有人知道这个解决方案,那么我会很高兴,在此先感谢。
你可以举一个例子说明你如何调用'update'? – icktoofay 2014-11-02 19:48:32
您需要从':$ value'中删除'$'标志 - 另外,很难说,但如果您碰巧使用的是单词'key', - 'key'是MySQL保留字; * – 2014-11-02 19:50:27
@icktoofay查看上面的帖子我编辑了它 – user3139504 2014-11-02 19:50:37