0

我正在将 xml 文件导入 MySQL。我有一个:警告:number_format() 期望参数 1 为双精度,字符串在第 224 行的 /home/dailyadc/public_html/include/form.php 中给出

这意味着这是错误的价格格式。我的 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>

我不知道该怎么做,因为它们都是不同的,有些包含分隔符,有些没有,有些包含错误....

4

1 回答 1

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);
}
于 2013-03-25T18:07:17.513 回答