Привет всем, я недавно пробовал свои силы в 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') ГДЕ имя пользователя = 'use' в строке 1
Любая помощь будет высоко ценится.