2013-08-24 18 views
0

所以我試圖調試一下,但我不知道爲什麼會發生這種情況。所以在從excel文件中檢索信息之後,我嘗試使用數據庫,對於大多數情況下這是有效的,但是我有兩個例外,這給我一個很難的時間。首先是零件號。 (例如:sxrv-11變成sxrv11)在db和第二個括號中(例如:(pv)被轉換爲1,所以(pv)tr55x將變成1tr55x)「012」,陣列的一個例子的var_dump:PHP - Codeigniter插入到DB時刪除短劃線和括號

array(20) { 
    ["stock_no"]=> 
    float(127) 
    ["part_no"]=> 
    string(9) "SIFR6A-11" 
    ["pop_code"]=> 
    string(3) "D-N" 
    ["jobber"]=> 
    float(15.2) 
    ["sell_out"]=> 
    string(0) "" 
    ["suggested_qty"]=> 
    float(4) 
    ["box_qty"]=> 
    string(1) "1" 
    ["case_qty"]=> 
    float(120) 
    ["description"]=> 
    string(50) "LASER IRIDIUM SPARK PLUG/BOUGIE IRIDIUM AU LASER" 
    ["individual_upc"]=> 
    string(12) "087295101278" 
    ["box_upc"]=> 
    string(12) "087295001271" 
    ["case_upc"]=> 
    string(14) "10087295001278" 
    ["part_status"]=> 
    string(0) "" 
    ["product_desc"]=> 
    string(0) "" 
    ["box_size"]=> 
    string(0) "" 
    ["fk_id_brand"]=> 
    int(1) 
    ["fk_id_category"]=> 
    string(1) "1" 
    ["fk_id_subcategory"]=> 
    string(1) "5" 
    ["description_en"]=> 
    string(24) "laser iridium spark plug" 
    ["description_fr"]=> 
    string(23) "bougie iridium au laser" 
} 

這是使用該數據陣列插入插入功能:

public function insert_product($product) 
{ 
    echo "<pre>"; 
    var_dump($product); 
    echo "</pre>"; 
    $this->db->set('fk_id_category', $product['fk_id_category']); 
    $this->db->set('fk_id_subcategory', $product['fk_id_subcategory']); 
    $this->db->set('fk_id_brand', $product['fk_id_brand']); 
    $this->db->set('stock_no', $product['stock_no']); 
    $this->db->set('part_no', $product['part_no']); 
    $this->db->set('pop_code', $product['pop_code']); 
    $this->db->set('jobber', $product['jobber']); 
    $this->db->set('part_status', $product['part_status']); 
    $this->db->set('sell_out', $product['sell_out']); 
    $this->db->set('suggested_qty', $product['suggested_qty']); 
    $this->db->set('box_qty', $product['box_qty']); 
    $this->db->set('case_qty', $product['case_qty']); 
    $this->db->set('description_en', $product['description_en']); 
    $this->db->set('description_fr', $product['description_fr']); 
    $this->db->set('product_desc', $product['product_desc']); 
    $this->db->set('box_size', $product['box_size']); 
    $this->db->set('individual_upc', $product['individual_upc']); 
    $this->db->set('box_upc', $product['box_upc']); 
    $this->db->set('case_upc', $product['case_upc']); 
    $this->db->insert('product'); 
} 

一旦在數據庫它修飾以之前描述的示例。我試過不同的mysql排序規則,它不會改變任何東西。

關於這一切的最奇怪的部分是,「pop_code」在插入數據庫時​​保留「 - 」。它們分別是varchar()20和5。

我不知道這是一個PHP問題,codeigniter問題,mysql問題,phpmyadmin問題。有人有線索嗎?

+0

你的 - > insert();添加以下模塊($ this-> db-> last_query());在這裏發佈輸出,看看它有什麼問題。 – ahmad

回答

0

Codeigniter有效記錄插入集()函數還將接受一個可選的第三個參數($ escape),如果設置爲FALSE,將阻止數據轉義。爲了說明不同之處,這裏使用了set()和escape兩個參數。

試試這個:$this->db->set('part_no', $product['part_no'], FALSE);

+0

好的,把參數設置爲false刪除字符串周圍的單引號,並給我一個數據庫錯誤,因爲不識別「 - 」。因此,示例'sss-11'變爲sss-11 – gfortin13

+0

您可以嘗試插入'$ this-> db-> set('part_no',$ product ['pop_code']);'?查看將pop_code值插入part_no時會發生什麼。 – Sithu

+0

所以最奇怪的事情正在發生,我設置part_no插入pop_code,它仍然添加part_no(不正確的)。 – gfortin13

0

我認爲這個問題是在你的數據庫字段的數據類型,

檢查列的數據類型,如果你想添加值,字符將其更改爲VARCAHR

嘗試

ALTER TABLE tablename MODIFY columnname VARCHAR; 

你也可以描述你的表結構

DESCRIBE tableName;