Обновление данных в БД на PDO

125
25 марта 2019, 16:50

Друзья подскажите как быть! Я с помощью Ajax отправляю данные на сервер для добавления в БД, на сервере обычный код с UPDATE.

Не могу придумать универсальный код чтобы при различных запросах на обновление в одну и ту же таблицу не писать новый код.

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

//обновление заказа в базе денных
    public function update_order($order, $pdo){
        $sql = $pdo->prepare("UPDATE `orders` SET 
            `company` = :company, `order_name` = :order_name, `status` = :status, `dead_line` = :dead_line, `cost` = :cost, `payment` = :payment, `description` = :description, `bill` = :bill, `act` = :act, `contract` = :contract WHERE `id` = :id");
        $sql->execute([
            ':id' => $order['id'],
            ':company' => $order['company'],
            ':order_name' => $order['order_name'],
            ':status' => $order['status'],
            ':dead_line' => $order['dead_line'],
            ':cost' => $order['cost'],
            ':payment' => $order['payment'],
            ':description' => $order['description'],
            ':bill' => $order['bill'],
            ':act' => $order['act'],
            ':contract' => $order['contract']
        ]);
        return $order['dead_line'];
    }//end addOrder
Answer 1
//обновление заказа в базе денных
public function update_order($order, $pdo){
    $query_list = [];
    $execute_list = ["id" => $order["id"]];
    $fields = ["company", "order_name", ];
    foreach ($fields as $field) {
        if (!empty($order[$field]) {
            $query_list[] = "`$field` = :$field";
            $execute_list[":$field"] = $order[$field];
        }
    }
    $sql = $pdo->prepare("UPDATE `orders` SET " . implode(", ", $query_list) . " WHERE `id` = :id");
    $sql->execute(execute_list);
    return $order['dead_line'];
}//end addOrder
READ ALSO
Отправка красивого письма в форму по ajax

Отправка красивого письма в форму по ajax

Есть у меня форма на сайте, все работаетскидываю образец файла email

154
Laravel 5.7 Middleware Routing

Laravel 5.7 Middleware Routing

Проблема с роутингом в Laravel 57 , всё работает на виртуальных серверах openserver и xampp

166
Как передать данные в файл php?

Как передать данные в файл php?

Доброго времени суток

139
Как загрузить контент если перешли по определенному табу (tab)?

Как загрузить контент если перешли по определенному табу (tab)?

Есть страница https://sitecom/zapis/ как загрузить определенный контент например: echo 'Yes'; если перешли на #tab3 https://site

124