格式字符串插入到MySQL数据库
我有以下字符串:格式字符串插入到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
感谢
如果你想每次有一个类似的字符串相同的列,那么你可以做这样的事情:
$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这个回答你的问题?
str_getcsv()如前面提到的将是一个更好的主意 – 2013-02-21 19:40:30
可能的话,我只是想提供一个简单的解决方案。 – user1477388 2013-02-21 19:40:44
不错[sql注入漏洞](http://bobby-tables.com)... – 2013-02-21 19:40:57
从先前回答后改进:
$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)
这让您将插入多行只是一个单一的查询。
RTLM:http://php.net/manual/en/function.str-getcsv.php – 2013-02-21 19:33:18
我们不知道你的db结构,所以不知道如何格式化任何东西 – 2013-02-21 19:33:32
道歉,添加了表结构。 – Dino 2013-02-21 19:35:17