2

いつも私たちを助けてくれる親切な人たち、こんにちは。PHPを使用してcsvファイルをmysqlにインポートする必要があります。私が今まで持っているコードは次のとおりです。

手順: 対応するすべての検証を行います。mysql接続を行います。

 //process the csv file
   $handle = fopen($_FILES['file']['tmp_name'], "r");
   while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    $att0 = mysql_real_escape_string($data[1]);
    $att1 = mysql_real_escape_string($data[1]);
    $att2 = mysql_real_escape_string($data[2]);
        etc, etc.
   $sql = "INSERT INTO Alumnos etc, etc.";
   mysql_query($sql);

エラー: Notice: Undefined offset: 1 in D:\www\studentAdministrator\imports\importar1.php 行 58

どんな助けにも感謝します。前もって感謝します。

私は私の問題を解決しました。セミコロンをコンマで変更しましたすでに投稿されている回答に感謝します

4

2 に答える 2

1

変数が渡されて次のように使用される前に、変数を確認してください。

if(isset($data[1]))? $att0 = mysql_real_escape_string($data[1]) : $att0='null';

好きなように設定できますが、そのようにして NULL を簡単に見られるかもしれないと思っただけです。

CSV ファイルに列が欠落しているが、常に正しい順序であることがわかっている場合 (このシナリオではおそらく良い例ではありませんが、言及する価値があります)、次のようなこともできます。

for($i=0;$i<count($data);$i++)
{
    echo 'Value '.$i.' is: '.$data[$i].'\n';
}

これは、行ごとに多くのアイテムが存在するにもかかわらず解析され、数を気にせずに使用できます。繰り返しますが、あなたのシナリオでは、おそらく最高ではありませんが、言及する価値があります.

于 2012-07-28T04:04:45.560 に答える
1

コメントで述べたように、これは末尾に空白のセルがある行をエクスポートしたことが原因である可能性があります。一部のユーティリティでは、適切な数の区切り文字を挿入する代わりに、最後のセルの後で行を終了します。ファイルを確認してください。それが問題である場合は、スクリプトに小さなロジックを追加して対処isset()できます。使用する前に各インデックスを確認し、存在しない場合は空の文字列 (またはnull、またはファイル内の他の場所の空のセルに使用するもの)。

于 2012-07-28T04:05:05.507 に答える