Php 将csv导入数据库只需一行
我有这个代码,但它只采取我的csv文件的第一行..我已经在互联网上搜索,但没有让我明白,因为我是非常新的php..我很抱歉,如果这个问题是重复的Php 将csv导入数据库只需一行,php,csv,Php,Csv,我有这个代码,但它只采取我的csv文件的第一行..我已经在互联网上搜索,但没有让我明白,因为我是非常新的php..我很抱歉,如果这个问题是重复的 if(isset($_POST["Import"])){ echo $filename=$_FILES["file"]["tmp_name"]; if($_FILES["file"]["size"] > 0) { $file = fopen($filename, "r"); while (($getData = fgetcsv(
if(isset($_POST["Import"])){
echo $filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0)
{
$file = fopen($filename, "r");
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
{
$sql = "INSERT INTO book (book_id,total_book,price,title,author,surname,genre,location) values
('$getData[0]','$getData[1]','$getData[2]','$getData[3]','$getData[4]','$getData[5]','$getData[6]','$getData[7]')";
$result = mysqli_query($con, $sql);
var_dump($sql);die;
// var_dump(mysqli_error_list($con));
// exit();
if(!isset($result))
{
echo "<script type=\"text/javascript\">
alert(\"Invalid File:Please Upload CSV File.\");
window.location = \"bookList.php\"
</script>";
}
else {
echo "<script type=\"text/javascript\">
alert(\"CSV File has been successfully Imported.\");
window.location = \"bookList.php\"
</script>";
}
}
fclose($file);
}
if(isset($\u POST[“导入”])){
echo$filename=$\u文件[“文件”][“tmp\u名称”];
如果($\u文件[“文件”][“大小”]>0)
{
$file=fopen($filename,“r”);
而($getData=fgetcsv($file,10000,“,”)!==FALSE)
{
$sql=“插入图书(图书id、图书总数、价格、标题、作者、姓氏、流派、位置)值
(“$getData[0]”、“$getData[1]”、“$getData[2]”、“$getData[3]”、“$getData[4]”、“$getData[5]”、“$getData[6]”、“$getData[7]”);
$result=mysqli\u查询($con,$sql);
var_dump($sql);die;
//变量转储(mysqli错误列表($con));
//退出();
如果(!isset($result))
{
回声“
警报(\“无效文件:请上载CSV文件。\”;
window.location=\“bookList.php\”
";
}
否则{
回声“
警报(\“CSV文件已成功导入。\”;
window.location=\“bookList.php\”
";
}
}
fclose($文件);
}
}您可以尝试用我的方式来处理保存在数据库中的用户考勤。 下面是我的代码,我正在上传到服务器/db中保存的数据
//after form post with file
if (isset($_POST["frmUplaod"])) {
extract($_POST);
$filename = basename($_FILES['attendance_file']['name']);
$targetfolder = 'Attendance/'. $filename .'';
if ($filename != "") {
move_uploaded_file($_FILES['attendance_file']['tmp_name'], $targetfolder);
chmod($targetfolder, 0777);
$msg = "Attendance file succesfully updated";
}
}
之后,我使用以下代码处理此csv文件:
function MakeID($id) {
$refine_id = "";
if (strlen($id) == "1") {
$refine_id = "SUL00" . $id;
} elseif (strlen($id) == "2") {
$refine_id = "SUL0" . $id;
} elseif (strlen($id) == "3") {
$refine_id = "SUL" . $id;
} else {
$refine_id = "SUL".$id;
}
return $refine_id;
}
//336668677
//Read directory
$FileArray = scandir("Attendance");
$i = 0;
$existsdate = array();
foreach ($FileArray as $f) {
$filename = "Attendance/" . $f;
$extensiondebug='';
if(!empty($f))
{
$splitex=explode(".",$f);
$extensiondebug=$splitex[1];
}
if ($extensiondebug == "csv") {
$row = 1;
if (($handle = fopen("Attendance/".$f, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
$terminal_id=1;
$emp_code=MakeID($data['1']);
$pd=split('/',$data[0]);
@$raw_date=$pd[2]."-".$pd[1]."-".$pd[0];
$unixtime=strtotime($raw_date);
$date=date('Y-m-d',$unixtime);
//echo $date."<br>";
if($data['1']!="ID" && $date!="1970-01-01")
{
if($data['6']!="00:00" && $data['6']!="0:00")
{
//echo $data['6']."<br>";
//echo $date;
$time=date('g:i:s',strtotime($data['6']));
//exit();
$res = $con->existsByCondition("attendance_raw", " employee_id='$emp_code' AND date='$date' AND time='$time'");
if ($res <= 0) {
$array = array(
"machine_id" => $terminal_id,
"date" => $date,
"time" => $time,
"employee_id" => $emp_code,
"result" => "1"
);
$con->insert("attendance_raw", $array);
}
}
if($data['7']!="00:00" && $data['7']!="0:00")
{
$time2=date('g:i:s',strtotime($data['7']));
$res = $con->existsByCondition("attendance_raw", " employee_id='$emp_code' AND date='$date' AND time='$time2'");
if ($res <= 0) {
$array = array(
"machine_id" => $terminal_id,
"date" => $date,
"time" => $time2,
"employee_id" => $emp_code,
"result" => "1"
);
$con->insert("attendance_raw", $array);
}
}
}
//echo "<br />\n";
}
fclose($handle);
}
rename($filename, 'read/' . $filename);
echo "file moved to specified directory.";
}
}
函数MakeID($id){
$refine_id=“”;
如果(strlen($id)=“1”){
$refine_id=“SUL00”。$id;
}elseif(strlen($id)=“2”){
$refine_id=“SUL0”。$id;
}elseif(strlen($id)=“3”){
$refine_id=“SUL”。$id;
}否则{
$refine_id=“SUL”。$id;
}
返回$refine\u id;
}
//336668677
//读取目录
$FileArray=scandir(“出席”);
$i=0;
$existsdate=array();
foreach($FileArray作为$f){
$filename=“考勤/”$f;
$extensiondebug='';
如果(!空($f))
{
$splitex=爆炸(“.”,$f);
$extensiondebug=$splitex[1];
}
如果($extensiondebug==“csv”){
$row=1;
if(($handle=fopen(“考勤/”$f,“r”))!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$row++;
$terminal_id=1;
$emp_code=MakeID($data['1']);
$pd=split('/',$data[0]);
@$raw_date=$pd[2]。“-”$pd[1]。“-”$pd[0];
$unixtime=strotime($raw_date);
$date=date('Y-m-d',$unixtime);
//回显$date。“
”;
如果($data['1']!=“ID”&&$date!=“1970-01-01”)
{
如果($data['6']!=“00:00”&&$data['6']!=“0:00”)
{
//echo$data['6']。“
”;
//echo$日期;
$time=date('g:i:s',strottime($data['6']);
//退出();
$res=$con->existsByCondition(“原始考勤”、“员工id=”$emp\U代码”和日期=“$date”和时间=“$time”);
如果($res$terminal_id),
“日期”=>$date,
“时间”=>$time,
“员工id”=>$emp\U代码,
“结果”=>“1”
);
$con->insert(“原始考勤”,$array);
}
}
如果($data['7']!=“00:00”&&$data['7']!=“0:00”)
{
$time2=date('g:i:s',strottime($data['7']);
$res=$con->existsByCondition(“原始考勤”、“员工id=”$emp\U代码”和日期=“$date”和时间=“$time2”);
如果($res$terminal_id),
“日期”=>$date,
“时间”=>$time2,
“员工id”=>$emp\U代码,
“结果”=>“1”
);
$con->insert(“原始考勤”,$array);
}
}
}
//回显“
\n”;
}
fclose($handle);
}
重命名($filename,'read/'。$filename);
echo“文件已移动到指定目录。”;
}
}
我希望这将帮助您完成csv文件处理。谢谢大家的帮助..我已经解决了这个问题,我代码中的问题只是我使用的分隔符,我使用了错误的分隔符您添加了
var\u dump($sql);死亡代码>&在while循环中添加脚本标记。把那些拿走。在while循环中,遍历每一行。让while循环完成后,它将保存所有记录var_dump($sql);死亡因为您添加了die,所以代码在运行一次之后就退出了。即使我删除了它,它仍然只需要第一行。看这里,也许这会对您有所帮助:(!feof($file)){print_r(fgetcsv($file));}试试看,您是否获得了所有数据