Обновление кроме строки в sql подготовленными операторами - PullRequest
0 голосов
/ 20 февраля 2020

Я получил таблицу продуктов с идентификатором, именем, описанием, цветом, ценой, количеством и статусом

Как я могу обновить только имя, описание или только 2-3 поля подряд, используя подготовленные операторы , Например, мое подготовленное утверждение имеет вид

UPDATE product SET product_name = ?, product_desc = ?,product_size = ?, product_color = ?,product_price = ?,product_quantity = ?, product_status = ? WHERE id = $id

, а bind_param выглядит следующим образом

bind_param("ssssiii", $data['name'], $data['desc'], $data['size'], $data['color'], $data['price'], $data['quantity'], $data['status'])

и предполагается, что $data['color'] и $data['quantity'] пусто, тогда как я могу обновить эту строку в базе данных, чтобы сохранить старое значение столбцов product_color и product_quantity.

Автоматически ли он сохраняет старые данные при выполнении оператора обновления или я должен был сделать некоторую проверку чего-то подобного?

вот мой код:

        $connect = new mysqli(HOST,USER,PASSWORD,DATABASE);;
        $sql = "UPDATE product SET product_name = ?, product_desc = ?,product_size = ?,
                product_color = ?,product_price = ?,product_quantity = ?, product_status = ? 
                WHERE id = $id";

        $stmt = $connect->prepare($sql);

        $stmt->bind_param("ssssiii", $data['name'], $data['desc'], $data['size'], $data['color'],
                        $data['price'],$data['quantity'],$data['status']);
        $stmt->execute();
        $stmt->close();

1 Ответ

2 голосов
/ 20 февраля 2020

Если я правильно понимаю, вы можете использовать coalesce():

UPDATE $tableName
    SET product_name = COALESCE(?, product_name),
        product_desc = COALESCE(?, product_desc),
        product_size = COALESCE(?, product_size),
        product_color = COALESCE(?, product_color),
        product_quantity = COALESCE(?, product_quantity),
        product_status = COALESCE(?, product_status)
    WHERE id = ?;

Примечания:

  • Это предполагает, что переданные параметры равны NULL, когда вы не t не нужно задавать значения.
  • Нельзя установить столбец на NULL.
  • Я изменил WHERE, поэтому он ссылается на параметр.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...