我正在将xml文件导入MySQL。 我有一个: 警告:number_format()期望参数1为double,在第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>
我不知道怎么做,因为它们都不同,其中一些包含分隔符,一些不包含,一些包含错误....
答案 0 :(得分:0)
我认为您将需要预处理您的文件,因为您的所有价格都很不稳定。另外,xx,xxx.xx不是有效的mysql float(double),如果引用该值,则为字符串,如果不加引号,则逗号充当列/字段分隔符。
实施例
SELECT "50,000.00";
SELECT 50,000.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);
}