Можете что-то подсказать по-поводу кода? Вот мой исходный кодpublic function update($table_name, $pole, $value, $where){ $pole = explode(", ", $pole); $values = explode(", ", $value); if(count($pole) == count($values)){ for($i = 0; $i connect->prepare("UPDATE ".$this->table_name($table_name)." SET ".$que." WHERE ".htmlspecialchars($where)); $STH->execute($values); } else{ return false; } } Подскажите, как лучше написать этот метод! Расскажите мне об моих ошибках! Мне нужно создать класс для работы с базой данных с драйвером PDO, но методы работают медленно и я не уверен в безопасности кода.
Вот несколько улучшений, которые можно внести в ваш метод обновления записи в базе данных:
Используйте подготовленные запросы для безопасности и защиты от SQL-инъекций.Не используйте htmlspecialchars для "where" условия, так как это может привести к неправильному сравнению значений.Проверяйте правильность названия полей и значений перед выполнением запроса.Разделяйте логику обновления записи и формирование запроса для более чистого и понятного кода.
Этот улучшенный метод использует подготовленный запрос, правильно формирует строку полей для обновления, и ловит исключения при выполнении запроса. Надеюсь, этот код поможет вам улучшить работу с базой данных.
Вот несколько улучшений, которые можно внести в ваш метод обновления записи в базе данных:
Используйте подготовленные запросы для безопасности и защиты от SQL-инъекций.Не используйте htmlspecialchars для "where" условия, так как это может привести к неправильному сравнению значений.Проверяйте правильность названия полей и значений перед выполнением запроса.Разделяйте логику обновления записи и формирование запроса для более чистого и понятного кода.Вот пример улучшенного метода:
public function update($table_name, $fields, $values, $where){if(count($fields) != count($values)){
return false;
}
$fields_str = implode(' = ?, ', $fields) . ' = ?';
$update_query = "UPDATE " . $this->table_name($table_name) . " SET " . $fields_str . " WHERE " . $where;
try {
$STH = $this->connect->prepare($update_query);
$STH->execute($values);
return true;
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
return false;
}
}
Этот улучшенный метод использует подготовленный запрос, правильно формирует строку полей для обновления, и ловит исключения при выполнении запроса. Надеюсь, этот код поможет вам улучшить работу с базой данных.