Home > Article > Backend Development > PHP method to import and export CSV files to mysql database_PHP tutorial
Due to work needs, we need to export the data in mysql into csv files, and then use PHP to import the csv files into the mysql database using the data provided by the merchants. Now I will introduce to you how PHP imports and exports CSV files to MySQL database program code, friends who need to know can refer to it.
The following is just a simple example
We first prepare the mysql data table. Assume that the project has a table student that records student information, and has id, name, sex, age to record the student's name, gender, age and other information respectively.
The code is as follows | Copy code | ||||||||
`id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL,
`age` smallint(3) NOT NULL default '0', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
We also need an html interactive page to place the import form and export button.
The code is as follows | Copy code |
The code is as follows | Copy code |
$action = $_GET['action'] ; if ($action == 'import') { //Import CSV //Import processing } elseif ($action=='export') { //Export CSV //Export processing } |
Import CSV processing process: Verify the legality of the csv file (ignored in this article) -> Open the fields in the csv file that are read and parsed -> Loop to obtain the values of each field -> Add to the data table in batches -> ;Finish.
The code is as follows | Copy code | ||||
$filename = $_FILES['file']['tmp_name']; If (empty ($filename)) { echo 'Please select the CSV file to import! '; exit; } $handle = fopen($filename, 'r'); $result = input_csv($handle); //Parse csv $len_result = count($result); If($len_result==0){ echo 'No data! '; exit; } for ($i = 1; $i < $len_result; $i++) { //Loop to obtain the values of each field $name = iconv('gb2312', 'utf-8', $result[$i][0]); //Chinese transcoding $sex = iconv('gb2312', 'utf-8', $result[$i][1]); $age = $result[$i][2]; $data_values .= "('$name','$sex','$age'),"; } $data_values = substr($data_values,0,-1); //Remove the last comma fclose($handle); //Close the pointer $query = mysql_query("insert into student (name,sex,age) values $data_values");//Batch insert into the data table If($query){ echo 'Import successful! '; }else{ echo 'Import failed! '; } }
|
代码如下 | 复制代码 |
function input_csv($handle) { |
The code is as follows | Copy code |
<🎜>function input_csv($handle) { $out = array (); $n = 0; While ($data = fgetcsv($handle, 10000)) { $num = count($data); for ($i = 0; $i < $num; $i++) { $out[$n][$i] = $data[$i]; } $n++; } Return $out; } <🎜> |
In addition, when importing into the database, we use batch insertion instead of inserting one by one, so when constructing the SQL statement, we need to do a little processing, see the code.
2. Export CSV
We know that csv file is a plain text file composed of comma delimiters. You can open it with excel and the effect is the same as xls table.
Export CSV processing flow: read student information table-> loop records to construct comma-separated field information-> set header information-> export file (download) to local
The code is as follows
|
Copy code
|
||||
} elseif ($action=='export') { //Export CSV $result = mysql_query("select * from student order by id asc"); $str = "Name, gender, age n"; $str = iconv('utf-8','gb2312',$str); While($row=mysql_fetch_array($result)){ $name = iconv('utf-8','gb2312',$row['name']); //Chinese transcoding $sex = iconv('utf-8','gb2312',$row['sex']); $str .= $name.",".$sex.",".$row['age']."n"; //Separate with quotation commas } $filename = date('Ymd').'.csv'; //Set the file name export_csv($filename,$str); //Export }
| To export data to the local computer, you need to modify the header information. The code is as follows:
The code is as follows |