2013-04-26 58 views
4

嗨我試圖從csv文件更新我的MYSQL數據庫中的表testprod。 (我發現這裏的代碼,並已更新到我的需要,幾乎:))從CSV文件更新Mysql表

它更新但十進制值被截斷,它失去(。)後的任何信息,例如400.25被減少到400

這裏是csv文件

'Product_ID','Model','HighPic','ManuId','Model_Name','categories_id','categories_image','parent_id','sort_order','categories_name','categories_description','categories_keywords','Name','Image','Price','Supplier','Weight','Stock','datetime' 
2055332,,,,,,,,,,,,,,800.4,,,'1', 
3916211,,,,,,,,,,,,,,444,,,'15', 
12073922,,,,,,,,,,,,,,737.6215,,,'0', 
4593772,,,,,,,,,,,,,,2822.4,,,'4', 
1684786,,,,,,,,,,,,,,4333.2,,,'1', 

的樣品和這裏是PHP代碼。

<?php 

// set local variables 
$connect = mysql_connect("localhost","db","password") or die('Could not connect: ' . mysql_error()); 
$handle = fopen("dailyupdates.csv", "r"); 

// connect to mysql and select database or exit 
mysql_select_db("rapido_creloaded", $connect); 

// loop content of csv file, using comma as delimiter 
while (($data = fgetcsv($handle, 1000, ",")) !== false) { 
$Product_ID = $data[0]; 
$price = $data[14]; 
$stock = $data[17]; 



$query = 'SELECT Product_ID FROM testprod'; 
if (!$result = mysql_query($query)) { 
continue; 
} 

if ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 

// entry exists update 
$query = "UPDATE testprod SET price ='$price' , stock = '$stock' 
WHERE Product_ID = '$Product_ID'"; 


mysql_query($query); 
if (mysql_affected_rows() <= 0) { 

// no rows where affected by update query 
} 
} else { 
// entry doesn't exist continue or insert... 
} 

mysql_free_result($result); 
} 

fclose($handle); 
mysql_close($connect); 

?> 
+0

什麼是列的數據類型? – 2013-04-26 09:37:23

+0

數據類型可能爲該列的整數..check db .. – 2013-04-26 09:37:53

+0

數據類型設置爲DECIMAL在DB – 2013-04-26 09:38:50

回答

4

設置它的數據類型爲DECIMAL(20,5) OR DOUBLE(20,5)

編輯

使用此查詢

$query = "UPDATE testprod SET price ='$price' , stock = $stock 
WHERE Product_ID = '$Product_ID'"; 
+0

請再問一個問題(我已更新到上面的代碼)以更改庫存(我一直都不想問很多事情)。但csv中的股票是用''括起來的,而這完全不會被複制。任何指針。該列的數據類型是INT謝謝John。 – 2013-04-26 09:50:29

+0

再次非常感謝你,今天早上我一直在玩這個遊戲,而且這個遊戲的代碼總是很少。 – 2013-04-26 10:06:32

0

不知道,如果你是在Mac上,但我用SequelPro。檢查他們在http://www.sequelpro.com/。有幾個SQL管理工具,但易於使用和成本,這些傢伙是最好的。我只是用它將我的表導出到csv。我修改了大約25000條記錄的整個列,然後將其導回到原始表格中。試試你的測試數據庫,看看它是否適合你。

祝您好運 MKW的