Функция обновления в php

У меня есть функция обновления, которая на данный момент обновляет необходимые изменения в базе данных MySQL при запуске index.php.

Это обновляет мой пароль, а не поле имени, я был над кодом и не могу понять почему. Любая помощь приветствуется.

Индекс, который сообщает, какие идентификаторы и поля должны обновляться с введенными данными

<!--?php
require_once 'core/init.php';

$userInsert = DB::getInstance()--->update('users', 1, array(
 'password' => 'newpass',
 'name' => 'Ben'
));

Функция в разных php, обновляющая базу данных

public function update($table, $id, $fields) {
 $set = '';
 $x = 1;

 foreach($fields as $name => $value) {
 $set .= "{$name} = ?";
 if($x < count($fields)) {
 $set .= ',';
 }
 $x++;
 }

 $sql = "UPDATE {$table} SET {$set} = 'newpassword' WHERE id = {$id}";

 if(!$this->query($sql, $fields)->error()) {
 return true;
 }

 return false;
}

Я считаю, что это небольшая ошибка или ошибка, но я не вижу проблемы.

Как вы можете видеть ниже, поле пароля было изменено, но имя не имеет

2 ответа

public function update($table, $id, $fields) {
 $set = '';
 $x = 1;

 foreach($fields as $name => $value) {
 $set .= "{$name} = \"{$value}\"";
 if($x < count($fields)) {
 $set .= ',';
 }
 $x++;
 }

 $sql = "UPDATE {$table} SET {$set} WHERE id = {$id}";

 if(!$this->query($sql, $fields)->error()) {
 return true;
 }

 return false;
}


Простое использование prepare и execute в PDO:

$sql = 'UPDATE '. $table .' SET username = :username, password = :password WHERE id = '. $id;
$sth = $dbh->prepare($sql);
$sth->execute(array(
 ':username' => 'ben',
 ':password' => 'newpassword'
));

licensed under cc by-sa 3.0 with attribution.