@Alpha12

Как правильно построить запрос в MSQLI что бы обновлять уже имеющиеся записи в бд?

Добрый день. Подскажите пожалуйста, у меня есть файл, я подключился к бд. через реквест отправляю на него запрос с параметрами.
и добавляю их в бд
id
name

Как сделать проверку по полю id в бд что если значения совпадает, то просто обновить ?
Я делал так. Получал все значения, с бд. Потом делал форич. И в нем делал проверку, если значения совпадают, то обновить. в другом случаи добавить. Но дело в том, что оно мне дублировало почему то ..
$model = $db->query("SELECT model FROM " . DB_PREFIX ."product");



    if(!empty($model->rows)){

        foreach($model->rows as $model){
            echo $data['id'];
           if( $data['id'] != $model['model']  ){
            $db->query("INSERT INTO " . DB_PREFIX . "product SET model='" . $db->escape($data['id']) . "',quantity='". $db->escape($data['quantity']) ."'" );
            $product_id = $db->getLastId();
            
            $db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $db->escape($data['name']) . "', description = '" . $db->escape($data['description']) . "', tag = '" . $db->escape($data['tag']) . "', meta_title = '" . $db->escape($data['meta_title']) . "', meta_h1 = '" . $db->escape($data['meta_h1']) . "', meta_description = '" . $db->escape($data['meta_description']) . "', meta_keyword = '" . $db->escape($data['meta_keyword']) . "'");
            $db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '0'");
           } else{
            $db->query( "UPDATE " . DB_PREFIX ."product SET quantity='". (int)$db->escape($data['quantity']) . "' WHERE model='". $db->escape($data['id'])."'");
           
           }
        }
    } else{
        $db->query("INSERT INTO " . DB_PREFIX . "product SET model='" . $db->escape($data['id']) . "',quantity='". $db->escape($data['quantity']) ."'" );
    $product_id = $db->getLastId();
    
    $db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $db->escape($data['name']) . "', description = '" . $db->escape($data['description']) . "', tag = '" . $db->escape($data['tag']) . "', meta_title = '" . $db->escape($data['meta_title']) . "', meta_h1 = '" . $db->escape($data['meta_h1']) . "', meta_description = '" . $db->escape($data['meta_description']) . "', meta_keyword = '" . $db->escape($data['meta_keyword']) . "'");
    $db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '0'");

   

    }
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ikutin666
можно использовать запрос такого вида
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы