當我嘗試更新我的值時,它給了我以下錯誤: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