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