Поскольку вы используете файлы .csv, вы можете сказать PHP, что ваш разделитель - точка с запятой.
<?php
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
?>
Для поиска каждого значения вашего файла вы можете использовать следующую стратегию:
<?php
$row = 0;
if (($handle = fopen("c:\\temp\\test.csv", "r")) !== FALSE)
{
//Searching line by line of the file
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$num = count($data);
$row++;
//Searching column by column of the current line
for ($col = 0; $col < $num; $col++)
{
//Here you can use the desired values
switch ($col) {
case 0:
$student_id = mysqli_real_escape_string($connect,$data[$col]);
break;
case 1:
$student_login = mysqli_real_escape_string($connect,$data[$col]);
break;
case 2:
$student_password = mysqli_real_escape_string($connect,$data[$col]);
break;
case 3:
$student_first_name = mysqli_real_escape_string($connect,$data[$col]);
break;
case 4:
$student_last_name = mysqli_real_escape_string($connect,$data[$col]);
break;
case 5:
$student_phone_number = mysqli_real_escape_string($connect,$data[$col]);
break;
case 6:
$student_gender = mysqli_real_escape_string($connect,$data[$col]);
break;
case 7:
$original_back_school = mysqli_real_escape_string($connect,$data[$col]);
break;
case 8:
$original_end_time = mysqli_real_escape_string($connect,$data[$col]);
break;
case 9:
$original_class = mysqli_real_escape_string($connect,$data[$col]);
break;
case 10:
$class_Halom = mysqli_real_escape_string($connect,$data[$col]);
break;
case 11:
$parent_id = mysqli_real_escape_string($connect,$data[$col]);
break;
case 12:
$teacher_id = mysqli_real_escape_string($connect,$data[$col]);
break;
}//end switch
}//endfor (columns of each line)
//If your file has a header and you wish to skip it, you can do something like this:
//if ($row > 1) { //create your query and execute it... }
$query = "INSERT INTO `student`(`student_id`, `student_login`, `student_password`, `student_first_name`, `student_last_name`, `student_phone_number`, `student_gender`, `original_back_school`, `original_end_time`, `original_class`, `class_Halom`, `parent_id`,`teacher_id`) VALUES ";
$query.= "($student_id, '$student_login','$student_password','$student_first_name','$student_last_name','$student_phone_number','$student_gender','$original_back_school','$original_end_time','$original_class','$class_Halom', $parent_id, $teacher_id) ";
mysqli_query($connect, $query);
//}
}
fclose($handle);
}
?>
У вас есть несколько вариантов классический метод do:
my @array = do {
open my $fh, "<", $filename
or die "could not open $filename: $!";
<$fh>;
};
метод IO :: All :
use IO::All;
my @array = io($filename)->slurp;
метод File :: Slurp :
use File::Slurp;
my @array = read_file($filename);
И, вероятно, еще много, в конце концов TIMTOWTDI .
Also have a look at Perl6::Slurp which implements the Perl6 version of slurp and is recommended in the "Perl Best Practices" book.
Some examples....
my @lines = slurp 'filename';
my @lines_chomped = slurp 'filename', { chomp => 1 };
my @lines_utf8 = slurp 'filename', { utf8 => 1 };
You've gotten the general techniques, but I want to put in that Perl sort of discourages you from doing that because it's very often the case that you can do the same thing you're doing one-line-at-a-time, which is inherently far more efficient.
Вы также можете рассмотреть возможность использования Tie :: File, особенно если вы читаете большие файлы и не хотите прочитать весь файл в память. Это основной модуль. Также, пожалуйста, обратитесь к perlfaq5 .
Для быстрого и грязного, мне скорее нравится простота гадости с @ARGV
.
# Ysth is right, it doesn't automatically die; I need another line.
use 5.010;
use strict;
my @rows = do {
use warnings FATAL => 'inplace'; # oddly enough, this is the one. ??
@ARGV='/a/file/somewhere';
<>;
};
say q(Not gettin' here.);
Если Perl * не может открыть файл, он автоматически умирает.
* - исполняемый файл, поэтому, пожалуйста, не пишите с большой буквы.
Я бы порекомендовал объектно-ориентированный подход, который не требует модулей вне дистрибутива CORE и будет работать где угодно:
use strict;
use warnings;
use IO::File;
my $fh = IO::File->new("< $file");
foreach ($fh->getlines) {
do_something($_);
}
$fh->close