php - 将数据从 CSV 文件插入数据库。只插入最后一行

标签 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();
?>

最佳答案

将查询的执行 ($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);

关于php - 将数据从 CSV 文件插入数据库。只插入最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28630604/

相关文章:

php - MySQL关系循环

mysql - sqoop 将特定列从 hdfs 导出到 mysql

mysql - 导入 Laravel 项目的 Mysql 数据库

mysql - INNER JOIN 3 个表引用 INFILE

c++ - 使用二维数组读取 csv 文件

python - 将csv读取到数组,对数组进行线性回归,并根据梯度在Python中写入csv

php - 删除空格和任何非字母数字的内容

php - 如何在 Laravel 关系中实现 SUM()?

php - 来自远程数据源的 jQuery UI 自动完成示例

php - 创建具有多种关系的 Eloquent 实例?