Как читать строки за строкой в ​​php

когда я пытаюсь вставить каждую строку в мою базу данных оракула, я получаю сообщение об ошибке с недопустимым числом, но если в файле есть только одна строка, она работает нормально.

$file = @fopen('file.text', "r") ; // while there is another line to read in the file while (!feof($file)) { // Get the current line that the file is reading $currentLine = fgets($file) ; $currentLine = explode(' ',$currentLine) ; insert($currentLine) ; } fclose($file) ; 

линии выглядят так

 1 4 100 1 4 101 

Вызов explode() использует 9 пробелов в качестве разделителя, но ваш файл имеет только 5 пробелов между каждым номером. Это означает, что ваш $currentline будет единственным массивом элементов, содержащим исходную строку, а не отдельными элементами с числом в каждом.

Либо измените количество пробелов во взрывоопасном вызове, либо измените на

 $currentLine = preg_split('/\s+/', $currentLine); 

который будет разделен на любое количество последовательных пространств.

Попробуй это:

 $currentLine = trim(fgets($file)); 

Вероятно, это может быть неудачно при переводе новой строки / каретки в конце строки.

Если нет, то где определена функция insert ()? Создайте раздел отладки, который эхо или записывает сделанные запросы, чтобы вы действительно могли увидеть проблему.

Я бы дважды уточнил, что в конце файла нет новой строки. Возможно, даже дважды проверьте внутри php, что прочитанная строка не является пустой.

 $lineCount=0; // while there is another line to read in the file while (!feof($file)) { $lineCount++; // Get the current line that the file is reading $currentLine = fgets($file); if(trim($currentLine) != ''){ $currentLine = explode(' ',$currentLine) ; insert($currentLine) ; echo "Inserted line number $lineCount<br />"; } else { echo "There was a blank line at line number $lineCount.<br />"; } } 
 $lines = explode("\n", str_replace("\r", "", file_get_contents("file.text"))); foreach ($lines as $line) { insert(explode(' ', $line); } 

попробуй это :

 // Read all data in the file $file_all = file_get_contents('file.text') or die("unable to open file"); // create an array with each index = a line $file_lines = explode(chr(13),$file_all); // Insert each line found foreach ($file_lines as $file_line) { insert($file_line); };