0

私はインターネットからいくつかの情報を収集し、CSV ファイルを MySQL データベースにインポートするためのこの小さなスクリプトを作成しました。正しいと思いますが、うまくいきません。

私は何を間違っていますか?

 <?php 

//connect to the database
$connect = mysql_connect("localhost","testdb","testdb");
mysql_select_db("testdb",$connect); //select the table    

if ($_FILES[csv][size] > 0) {

    //get the csv file
    $file = $_FILES[csv][tmp_name];
    $handle = fopen($file,"r");

    //loop through the csv file and insert into database
    do {
        if ($data[0]) {
            mysql_query("INSERT INTO class12 (htno, subcode, subname, int_marks, ext_marks, result, credits) VALUES
                (
                    '".addslashes($data[0])."',
                    '".addslashes($data[1])."',
                    '".addslashes($data[2])."'
                    '".addslashes($data[3])."'
                    '".addslashes($data[4])."'
                    '".addslashes($data[5])."'
                    '".addslashes($data[6])."'
                    '".addslashes($data[7])."'
                )
            ");
        }
    } while ($data = fgetcsv($handle,3000,",","'"));
    //

    //redirect
    header('Location: import.php?success=1'); die;

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Import a CSV File</title>
</head>

<body>

<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?>

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  Choose your file: <br />
  <input name="csv" type="file" id="csv" />
  <input type="submit" name="Submit" value="Submit" />
</form>

</body>
</html>

可能であれば、誰かがファイル名 (.csv拡張子なし) で SQL テーブルを自動作成し、それをインポートするコードを含めてください。

4

2 に答える 2

1

次の行のコンマが抜けています

                '".addslashes($data[4])."'
                '".addslashes($data[5])."'
                '".addslashes($data[6])."'
                '".addslashes($data[7])."'`

コードをテストしましたが、正常に動作しています。役に立ったら投票してください

2.ここにテーブル名を入れたのかもしれません。データベース名を書かなければなりません。

mysql_select_db("testdb",$connect); //select the table

于 2013-09-02T19:42:36.207 に答える
0

mysql_query("INSERT INTO class12 (htno, subcode, subname, int_marks, ext_marks, result, credits) VALUES ( '".addslashes($data[0])."', '".addslashes($data[1]). "', '".addslashes($data[2])."' '".addslashes($data[3])."' '".addslashes($data[4])."' '".addslashes( $data[5])."' '".addslashes($data[6])."' '".addslashes($data[7])."'//これは余計なことだと思いますが、テーブルには 7 つの列しかありません!

于 2014-02-05T16:12:37.180 に答える