2013-03-25 76 views
0

我正在導入xml文件到MySQL。 我有一個: 警告:number_format()預計參數1是在/home/dailyadc/public_html/include/form.php給出線224mysql的價格字段分隔符更改前插入xml導入

雙,字符串,這意味着這是錯誤的價格格式。我的xml價格節點包含凌亂的價格格式。我只有一個方式來寫一些觸發之前插入,使他們只是在一個英國的格式爲:10,000.00

有我的價格節點:

<price>10 100</price> 
<price>10.000,24</price> 
<price>10,000.34</price> 
<price>10,000,00</price> 
<price>10.000.00</price> 
<price>1.000.00</price> 

我不知道如何做到這一點,因爲所有的他們是不同的,其中一些包含分隔符,一些不包含,一些包含錯誤....

回答

0

我認爲你將需要預處理你的文件,因爲你所有的價格是不可靠的。另外,xx,xxx.xx不是有效的mysql float(double),如果該值被引用,則它是一個字符串,如果未加引號,則逗號用作列/字段分隔符。

實例

  • SELECT "50,000.00";
    • 返回字符串 「50,000.00」
  • SELECT 50,000.00;
    • 返回兩列,一列= 50和其他= 0.00

進行預處理,在PHP一旦你的價格

if (substr($price, -3, 1) == '.'){ 
    // Properly formated, just need to remove the commas 
    $price = str_replace(',','',$price); 
} else if (substr($price, -3, 1) == ','){ 
    // Periods before commas. 
    // Remove all of the '.', then swap the ending ',' for a '.' 
    $price = str_replace(array('.', ','), array('', '.'), $price); 
} else { 
    // Price is in an odd format 
    // Two options: 
    // Remove product entirely 
    // or 
    // Remove all non-numeric values from price (assumes no negative prices) 
    $price = preg_replace('/[^0-9]/', '', $price); 
} 
+0

你可以做這樣的事情非常感謝您的回答。我懂了。問題是這些記錄已經插入生產站點。我必須解決它。 – 2013-03-30 15:40:39