在 MYSQL 数据库中插入 CSV 文件期间处理特定范围行

问题描述

我正在尝试将数据从 csv 插入到 MysqL 数据库中,如下所示并且工作正常

$file = fopen('../assets/uploads/'.$file_name,"r");
            
            while (($column = fgetcsv($file,10000,",")) !== FALSE) {
            
            $fname = "";
            if (isset($column[0])) {
                $fname = MysqLi_real_escape_string($MysqLi,$column[0]);
            }
            $lname = "";
            if (isset($column[1])) {
                $lname = MysqLi_real_escape_string($MysqLi,$column[1]);
            }
            $email = "";
            if (isset($column[2])) {
                $email = MysqLi_real_escape_string($MysqLi,$column[2]);
            }
            
            
            $sqlInsert = "INSERT into $lead_data_table (lfname,llname,lemail,lead_id,lead_user_id) VALUES (?,?,?)";
            $stmt = $MysqLi->prepare($sqlInsert);
            $stmt->bind_param('sssii',$fname,$lname,$email,$lead_insert_id,$lead_user_id);
            $stmt->execute();
            $stmt->close();
            
           $insertId = MysqLi_insert_id($MysqLi);

但是由于某种原因I want insert data from CSV like 0 to 100 or 100 to Remain All。我不知道我该怎么做?让我知道这里是否有人可以帮助我做同样的事情。

谢谢!

解决方法

计算 csv 行数并跳过。像这样的事情将从第 100 行开始处理。

$file = fopen('../assets/uploads/'.$file_name,"r");
$lineCount = 0;
while (($column = fgetcsv($file,10000,",")) !== FALSE) {
    $lineCount ++;
    if ($lineCount >= 100) {
        /* process the line */
    }
}

顺便说一句,您正确地执行了准备好的语句。因此,您无需在插入数据之前使用 mysqli_real_escape_string() 对其进行处理。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...