The following is just a simple example
We first prepare the MySQL datasheet, assuming that the project has a record of student information on the table student, and have id,name,sex,age record the student's name, gender, age and other information.
| The code is as follows |
Copy Code |
|
CREATE TABLE ' Student ' (
' id ' int (one) not NULL auto_increment,
' Name ' varchar not NULL,
' Sex ' varchar 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.
| code is as follows |
copy code |
|
<form id= "AddForm" action= "Do.php?action=import" method= "post" enctype= "Multipart/form-data" >&NBSP
<p> Please select the CSV file to import: <br/><input type= "file" name= File "> <input type=" submit "
class=" btn " value=" Import csv " >&NBSP
<input type= "button" class= "BTN" value= "Export csv" onclick= "window.location.href= ' do.php?
action=export '" ></p>
</form> |
Select a good local CSV file, click Import, submit to Do.php?action=import processing, and click the Export button to request address Do.php?action=export data export processing.
1. Import CSV
Do.php needs to process the import and export process separately according to the parameters of Get, PHP structure as follows:
Include_once ("connect.php"); Connecting to a database
| 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 CSV file legality (omitted in this article)-> opens the read in and resolves the fields in the CSV file-> loops get each field value-> the batch add to the datasheet-> done.
| The code is as follows |
Copy Code |
|
if ($action = = ' Import ') {//import CSV
$filename = $_files[' file ' [' Tmp_name '];
if (empty ($filename)) {
Echo ' Please select the CSV file you want to import! ';
Exit
}
$handle = fopen ($filename, ' R ');
$result = Input_csv ($handle); Parsing CSV
$len _result = count ($result);
if ($len _result==0) {
Echo ' doesn't have any data! ';
Exit
}
for ($i = 1; $i < $len _result $i + +) {//loop to get each field value
$name = Iconv (' gb2312 ', ' utf-8 ', $result [$i][0]); Chinese transfer 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 Datasheet
if ($query) {
echo ' Import successful! ';
}else{
echo ' Import failed! ';
}
} |
Note that PHP's 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.
| 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];
&NBSP;}&NBSP
$n ++;
&NBSP
return $out;
} |
In addition, when importing into a database, we use bulk inserts instead of inserts, so when building SQL statements, we need to do a little processing, see code.
2. Export CSV
We know that a CSV file is a plain text file made up of comma-delimited characters, and you can open it in Excel with the same effect as the XLS table.
Export CSV processing flow: Read Student information table-> Circular record build comma-delimited 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-ID ASC");
$str = "name, sex, age n";
$str = Iconv (' utf-8 ', ' gb2312 ', $str);
while ($row =mysql_fetch_array ($result)) {
$name = Iconv (' utf-8 ', ' gb2312 ', $row [' name ']); Chinese transfer Code
$sex = Iconv (' utf-8 ', ' gb2312 ', $row [' sex ']);
$str. = $name. ",". $sex. "," $row [' age ']. " n "; Separate with quotation commas
}
$filename = Date (' Ymd '). CSV '; Set file name
Export_csv ($filename, $STR); Export
} |
To export the data locally, you need to modify the header information as follows:
| The code is as follows |
Copy 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 that the import and export process, because we are using a unified UTF-8 code, encountered in Chinese characters must remember to turn code, otherwise it may appear in the case of garbled characters.
PHP downloads Import and export CSV files: Http://file.111cn.net/download/2013/05/15/importCSV.rar