CSVをMySQLデータベースにインポートしようとしています。ここで、新しい行はそれぞれデータベースの新しい行を表す必要があります。
これが私がCSVでこれまでに持っているものです:
1one, 1two, 1three, 1four
2one, 2two, 2three, 2four
そして、アプリケーションでは:
$handle = fopen($_FILES['filename']['tmp_name'], "r");
$data = fgetcsv($handle, 1000, ",");
$sql = "INSERT INTO tbl (col1, col2, col3, col4) VALUES (?, ?, ?, ?)";
$q = $c->prepare($sql);
$q->execute(array($data[0],$data[1],$data[2],$data[3]))
問題は、明らかにループがないために、最初の4つの値のみが挿入されていることです。
これを解決するための2つのオプションを考えることができます。
1)インデックスの位置を記憶し、挿入された各配列値に対してn + 1を実行する、「ハッキー」なforループを実行します。
2)fgetcsvは私が必要とする関数ではなく、新しい行を処理するためのより良いものがあることを認識してください。
ありがとう!