2013-02-21 71 views
0

我有以下字符串:格式字符串插入到MySQL数据库

$result = "category,date,product,cost 
car,10/10/2005,toyota,3000 
bike,12/12/2007,yamaha,1000"; 

我需要安排串入的最佳格式插入到数据库(必须是有效的,因为可能有很多的数据第一行也不需要)。

的字符串是新线,这样我就可以:

$n = explode("\n", $result); 

这使它在这一格式:

[0] => category,date,product,cost 
[1] => car,10/10/2005,toyota,3000 
[2] => bike,12/12/2007,yamaha,1000 

现在怎么样,我会去格式化这个在DB插入,再次解决方案需要有效的(性能),我也想不被插入的第一行和最后在我希望的日期插入到无法插入。

希望它是有道理的,感谢提前的帮助。

--------编辑---------------

表(项)被构造为具有以下字段:

category, product, cost 

感谢

+1

RTLM:http://php.net/manual/en/function.str-getcsv.php – 2013-02-21 19:33:18

+0

我们不知道你的db结构,所以不知道如何格式化任何东西 – 2013-02-21 19:33:32

+0

道歉,添加了表结构。 – Dino 2013-02-21 19:35:17

回答

0

如果你想每次有一个类似的字符串相同的列,那么你可以做这样的事情:

$n = explode("\n", $result); 

// skip the first row since it's just column names 
for ($i = 1; $i <= count($n); $i++) 
{ 
    $cat = $n[$i][[0]; // category 
    $date = $n[$i][[1]; // date 
    $prod = $n[$i][[2]; // product 
    $cost = $n[$i][[3]; // cost 

    // and you can put it into a query like so 
    $sql = "insert into myTable ('category', 'date', 'product', 'cost') values ('$cat', '$date', '$prod', '$cost')"; 
} 

d这个回答你的问题?

+1

str_getcsv()如前面提到的将是一个更好的主意 – 2013-02-21 19:40:30

+0

可能的话,我只是想提供一个简单的解决方案。 – user1477388 2013-02-21 19:40:44

+1

不错[sql注入漏洞](http://bobby-tables.com)... – 2013-02-21 19:40:57

0

从先前回答后改进:

$n = explode("\n", $result); 

// skip the first row since it's just column names 

$sql = "insert into myTable ('category', 'date', 'product', 'cost') values "; 

for ($i = 1; $i <= count($n); $i++) 
{ 
    $cat = $n[$i][[0]; // category 
    $date = $n[$i][[1]; // date 
    $prod = $n[$i][[2]; // product 
    $cost = $n[$i][[3]; // cost 

    $sql .= "('$cat', '$date', '$prod', '$cost'),"; 
} 

$sql = trim($sql, ","); 

if(count($n) != 0) 
    mysql_qiery($sql) 

这让您将插入多行只是一个单一的查询。