codeigniter 如何确保存储的数据是唯一的

klsxnrf1  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(92)
public function insert_all() {
        $get_data = $this->call_api->fetchData('GET', 'http://89.201.137.7:8082/datasnap/rest/grupeartikala/lista', false);
        $response = json_decode($get_data);
        $data = $response->result[0]->grupe_artikala;
        foreach ($data as $item) {
            $sku = ltrim($item->grupa_artikla);
            $product = array(
                'sku' => $sku,
                'title' => $item->naziv,
                'enabled' => $item->enabled
            );
            try {
                $this->db->insert('products', $product);
                $db_error = $this->db->error();
                if (!empty($db_error)) {
                    throw new Exception("Database error! Error Code [" . $db_error['code'] . "] Error: " . $db_error['message']);
                }
            } catch (Exception $e) {
                log_message('error:', $e->getMessage());
                return;
            }
        }
        return $data;
    }

我提取一些数据并保存到数据库中,大约有200个元素。

public function insert_all_products()
    {
            $this->luceed_model->insert_all();
            redirect(site_url('/luceed_products/products'));
    }

我从控制器调用模型,这个方法在表单提交时运行。

<?php echo form_open('/luceed_products/insert_all_products', 'class="ciForm"'); ?>
<input type="submit" name="submit" value="Save To Database">
</form>

还有表单。我怎样才能让它只在条目是唯一的时候才提交数据呢?我试着用$this-〉db-〉where('sku!=',$sku)做一个条件,然后用$this-〉db-〉insert在条件为真的时候插入到数据库。我不认为我可以用set_validation()来检查唯一性,因为我没有存储输入字段的数据。
编辑:我在数据库中将SKU设置为UNIQUE,现在当我尝试保存重复的数据时,我得到了一个数据库错误重复条目。

    • 错误处理设置为TRUE的数据库错误**:

发生数据库错误错误号:1062
关键字'sku'的条目'1'重复
插入到productsskutitleenabled)值中("0001","波克里瓦扎格拉武","D")
文件名:C:/拉拉贡/www/luceed/系统/数据库/数据库驱动程序. php
行号:692

    • 数据库错误,没有通过codeigniter进行错误处理**:

遇到PHP错误严重性:注意事项
消息:未定义的索引:错误:
文件名:cn.php
行号:181
回溯:
文件:C:\拉腊贡\www.luceed\应用程序\模型\luceed_模型. php行:40功能:日志消息
文件:C:\拉腊贡\www.luceed\应用程序\控制器\luceed_产品. php26功能:插入全部
文件:C:\拉腊贡\www\luceed\index.php行:315功能:要求一次

ee7vknir

ee7vknir1#

public function insert_all() {
    $get_data = $this->call_api->fetchData('GET', 'http://89.201.137.7:8082/datasnap/rest/grupeartikala/lista', false);
    $response = json_decode($get_data);
    $data = $response->result[0]->grupe_artikala;
    foreach ($data as $item) {
        $sku = ltrim($item->grupa_artikla);
        $product = array(
            'sku' => $sku,
            'title' => $item->naziv,
            'enabled' => $item->enabled
        );
        $sql =  $this->db->set($product)->get_compiled_insert('products');
        $ErrorIgnoredInsert = str_ireplace('INSERT','INSERT IGNORE',$sql);
        $this->db->query($ErrorIgnoredInsert);

    }
    return $data;
}

相关问题