We first prepare the MySQL data table, assuming that the project has a record of student information table student, and there are id,name,sex,age to record the student's name, gender, age and other information.
CREATE TABLE ' student ' ( ' id ' int (one) not null auto_increment, ' name ' varchar (a) ' NOT null, ' sex ' varchar (10) Not NULL, ' age ' smallint (3) is not null default ' 0 ', PRIMARY KEY (' id ')) engine=myisam default Charset=utf 8;
We also need an HTML interactive page to place the import form and export button.
<form id= "AddForm" action= "Do.php?action=import" method= "post" enctype= "Multipart/form-data" > <p> Please select the CSV file to import: <br/><input type= "file" name= "file" > <input type= "Submit" class= "btn" value= "Import csv" > <input type= "button" class= "BTN" value= "Export csv" onclick= "window.location.href=" do.php? Action=export ' "></p> </form>
After selecting a good local CSV file, click Import, submit to Do.php?action=import processing, and click the Export button to request the address Do.php?action=export for data export processing.
Import CSV
Do.php needs to handle the import and export process separately based on the parameters of Get, PHP structure is as follows:
Include_once ("connect.php"); Connect database $action = $_get[' action '), if ($action = = ' Import ') {//import CSV //import processing} elseif ($action = = ' export ') {//EXPORT CS V //Export Processing}
Import CSV process: Verify CSV file legitimacy (this article ignores), open read-in and parse CSV
The fields in the pieces, loop get each field value, and then bulk add to the datasheet, complete.
if ($action = = ' Import ') {//import csv $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 ' doesn't have any data! '; Exit } for ($i = 1; $i < $len _result; $i + +) {//Loop get each field value $name = Iconv (' gb2312 ', ' utf-8 ', $result [$i][0]);//Chinese to Code $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 pointer $query = mysql_query ("INSERT into student (name,sex,age) values $data _values");//Bulk INSERT in the datasheet if ($query) { Echo ' Import succeeded! '; }else{echo ' Import failed! '; } }
Note that PHP's own fgetcsv function makes it easy to work with CSV, which allows you to read a line from the file pointer and parse the CSV field. The following function parses the CSV file field and returns it as an array.
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 a database, we are using bulk inserts instead of inserts, so when you build the SQL statement, you need to handle it a bit, see code.
Export CSV
We know that a CSV file is a plain text file made up of comma separators, which you can open with Excel, with the same effect as the XLS table.
Export CSV processing process: Read the Student information table, circular record building comma-delimited field information, setting header information, export file (download) to local.
... } 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 "; Separated by a comma of quotation $filename = Date (' Ymd '). CSV '; Set file name export_csv ($filename, $STR);//Export}
To export the data locally, the header information needs to be modified, with the following code:
function Export_csv ($filename, $data) { header ("Content-type:text/csv"); Header ("Content-disposition:attachment;filename=". $filename); Header (' cache-control:must-revalidate,post-check=0,pre-check=0 '); Header (' expires:0 '); Header (' Pragma:public '); Echo $data; }
Note the import and export process, because we are using a unified UTF-8 encoding, encountered in Chinese characters must remember transcoding, otherwise there may be garbled in the situation.
The above is "technology advanced" PHP How to import and export the contents of CSV file, more relevant content please pay attention to topic.alibabacloud.com (www.php.cn)!