【发布时间】:2014-11-02 19:42:34
【问题描述】:
当我尝试更新我的值时,它给了我以下错误:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined。 这只发生在特殊字符上,例如: (hello;) 而不是 (hello) 由于某种原因,它找不到带有特殊字符的值,我只能插入它们 并且不会从我的数据库中更新或删除它。
并且数据库已经设置为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);
}
数组是给出一个键和一个新值来更新,逗号后面是在表'name'中搜索值。
如果有人知道这个问题的解决方案,那么我会很高兴,在此先感谢。
【问题讨论】:
-
你能举个例子说明你是怎么打电话给
update的吗? -
您需要从两个
:$value中删除$符号-另外,这很难说,但是如果您碰巧使用了key,-key是MySQL 保留字; 只是一个见解。 -
@icktoofay 看到上面的帖子我编辑了它
-
@Fred-ii- 不,这就是stackoverflow的显示方式,使用“”时,您可以在其中放置一个变量
-
@user3139504 啊,好的。通常,绑定中没有
$,至少我从不使用它们。
标签: php pdo special-characters