Можете что-то подсказать по-поводу кода? Вот мой исходный код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, но методы работают медленно и я не уверен в безопасности кода.

21 Авг 2019 в 07:08
197 +1
0
Ответы
1

Вот несколько улучшений, которые можно внести в ваш метод обновления записи в базе данных:

Используйте подготовленные запросы для безопасности и защиты от SQL-инъекций.Не используйте htmlspecialchars для "where" условия, так как это может привести к неправильному сравнению значений.Проверяйте правильность названия полей и значений перед выполнением запроса.Разделяйте логику обновления записи и формирование запроса для более чистого и понятного кода.

Вот пример улучшенного метода:

public function update(tablename,table_name, tablen ame,fields, values,values, values,where){
if(count(fields)!=count(fields) != 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;
}
}

Этот улучшенный метод использует подготовленный запрос, правильно формирует строку полей для обновления, и ловит исключения при выполнении запроса. Надеюсь, этот код поможет вам улучшить работу с базой данных.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир