0

我有以下字符串:

$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

现在我将如何格式化它以插入数据库,再次解决方案需要高效(为了性能),我也希望第一行不被插入,最后在插入时我希望日期不被插入。

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

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

表(项目)由以下字段构成:

category, product, cost

谢谢

4

2 回答 2

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')";
}

这回答了你的问题了吗?

于 2013-02-21T19:39:23.550 回答
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_query($sql)

这只会给您一个查询,该查询将插入多行。

于 2013-02-21T19:59:07.917 回答