когда я пытаюсь вставить каждую строку в мою базу данных оракула, я получаю сообщение об ошибке с недопустимым числом, но если в файле есть только одна строка, она работает нормально.
$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); };