从CSV文件向数据库插入数据。仅插入最后一行

时间:2015-02-20 13:52:50

标签: php mysql csv

我从csv文件中读取数据,并希望将其插入到我的数据库中。问题是它每次只插入CSV文件中的最后一行。但是,当我将$ sq1打印到屏幕时,它会显示所有48个插入,这些插入具有它们应具有的不同值。谁能告诉我为什么它只在数据库中插入一行?

<?php
// Did modify login values for privacy
$servername = "10.100.";
$username = "myusername";
$password = "abc123";
$dbname = "informationdata";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$file = fopen("ALMGrade.csv","r");

while(! feof($file)){

 $ar =fgetcsv($file);
  $sql = "INSERT INTO gradetable_copy (Grade, Grade1, Grade2, Grade3, Grade4, Grade5, Grade6)
VALUES ('$ar[0]', '$ar[1]', '$ar[2]', '$ar[3]', '$ar[4]', '$ar[5]', '$ar[6]' )";
echo $sql;
echo "<br>";
}
fclose($file);




if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

1 个答案:

答案 0 :(得分:0)

将查询($conn->query($sql))的执行移到while:

while(! feof($file))
{
 $ar =fgetcsv($file);
  $sql = "INSERT INTO gradetable_copy (Grade, Grade1, Grade2, Grade3, Grade4, Grade5, Grade6)
VALUES ('$ar[0]', '$ar[1]', '$ar[2]', '$ar[3]', '$ar[4]', '$ar[5]', '$ar[6]' )";
echo $sql;
echo "<br>";
if ($conn->query($sql) === TRUE) 
     {
      echo "New record created successfully";
     } 
else 
     {
        echo "Error: " . $sql . "<br>" . $conn->error;
     }
}
fclose($file);