Как сделать запрос проще и получить php значение? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть вопрос о моем коде, который, на мой взгляд, недостаточно быстр. Я заметил, что скорость всего процесса стала ниже после внедрения этого кода:

if (!empty($data['price1']) && !empty($data['price2']) && !empty($data['price3']) && !empty($data['price4']) && !empty($data['price5']) && !empty($data['price6']) && !empty($data['price7']) && !empty($data['price8']) && !empty($data['price9']) && !empty($data['price10'])) {
    $query=$this->db->query("SELECT product_id from ".DB_PREFIX."product WHERE model='".$data['model']."' ");
        if($query->num_rows){
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price1'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='2' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price2'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='3' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price3'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='4' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price4'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='5' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price5'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='6' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price6'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='7' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price7'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='8' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price8'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='9' ");      
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price9'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='10' ");     
            $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($data['price10'])."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='11' ");        

        }
        else
        {
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price1']."',customer_group_id='2'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price2']."',customer_group_id='3'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price3']."',customer_group_id='4'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price4']."',customer_group_id='5'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price5']."',customer_group_id='6'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price6']."',customer_group_id='7'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price7']."',customer_group_id='8'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price8']."',customer_group_id='9'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price9']."',customer_group_id='10'");
            $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$data['price10']."',customer_group_id='11'");
        }
}

Я не профессионал в php кодировании, пытаюсь сделать все возможное, просто я думаю, что, возможно, есть более быстрый способ обновить выбранные таблицы или, если они пустые, вставить новые значения. Пытался сделать по-другому, например, проверять все данные [price1], [price2] и т. Д. c, но это было намного медленнее, поэтому попытался таким образом - процесс все еще медленный.

1 Ответ

0 голосов
/ 24 апреля 2020

Используйте l oop foreach

Примерно так, но я не знаю, как вы управляете вашими "$ product_id" и "customer_group_id". Я думаю, что вы не должны использовать один и тот же массив для ваших цен и модели.

$query=$this->db->query("SELECT product_id from ".DB_PREFIX."product WHERE model='".$model."' ");

foreach($data as $key=>$value){
    $customer_group_id = $key+1;
    if($query->num_rows){
         $this->db->query("UPDATE ".DB_PREFIX."product_prices SET price='".$this->db->escape($value)."' WHERE product_id='".$query->row['product_id']."' and customer_group_id='".$customer_group_id."' ");  
    }else {
         $this->db->query("INSERT INTO ".DB_PREFIX."product_prices SET product_id='".$product_id."',price='".$value."',customer_group_id='".$customer_group_id."'");
    }
}
...