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

$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 に答える
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 に答える