Обрабатывайте строку определенного диапазона Во время вставки CSV-файла в базу данных MYSQL

#php #mysql

Вопрос:

Я пытаюсь вставить данные из 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 . Я не понимаю, как я могу это сделать? Дайте мне знать, если кто-нибудь здесь сможет помочь мне сделать то же самое.

Спасибо!

Комментарии:

1. Не используйте mysqli_real_escape_string

Ответ №1:

Подсчитайте строки csv и пропустите. Что — то подобное произойдет, начиная с сотой строки.

 $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() для изменения ваших данных перед их вставкой.