|          
This file is /tmp/phpBeoJQ5 .  ################# You can copy this code to test #################
 
 <?
 include("include/dbclass.inc"); //可以用 MYSQL.INC 类代替测试
 $q = new DB_Sql;
 
 $db = $q->Database; //define the database
 mysql_connect('localhost:3306',$q->User,$q->Password);
 ?>
 
 <form method="post" action="<?php echo $PHP_SELF;?>"
 enctype="multipart/form-data">
 <input type="file" name="csv_file"
 value="<?php echo $csv_file;?>">  
 terminated by <input type="text" name="terminated"
 value="," size=2><p>
 Which table you want to insert ?
 <?php show_table($db,$table); ?><p>
 <input type="submit" name="submit" value="go">
 </form>
 
 <?php
 
 function show_field($db,$table,$num,$selected_field) {
 $result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
 $primary = "";
 while ($row = mysql_fetch_array($result))
 if ($row["Key_name"] == "PRIMARY")
 $primary .= "$row[Column_name], ";
 $result = mysql_db_query($db, "SHOW FIELDS FROM $table");
 if (!$result) {
 mysql_die();
 }
 else {
 echo "<select name=field$num>n";
 while ($row= mysql_fetch_array($result)) {
 $selected = ($selected_field == $row["Field"]) ? "selected" : "";
 echo "<option value=" . $row["Field"] . " $selected>" .
 $row["Field"] . "</option>n";
 }
 echo "</select>nn";
 }
 }
 
 function show_table($db,$selected_table) {
 $tables = mysql_list_tables($db);
 $num_tables = @mysql_numrows($tables);
 if ($num_tables == 0) {
 echo "no table yet";
 }
 else {
 $i = 0;
 echo "<select name=table>n";
 while ($i < $num_tables) {
 $table = mysql_tablename($tables, $i);
 $selected = ($selected_table == $table) ? "selected" : "";
 echo "<option value=$table $selected>$table</option>n";
 $i++;
 }
 echo "</select>nn";
 }
 }
 
 if ($submit) {
 if(!empty($csv_file) && $csv_file != "none") {
 //$csv_file = stripslashes($csv_file);
 $fp = fopen($csv_file, "r");
 
 // show first line of the csv file to select dababase table and its fields
 echo "<form method=post action=$PHP_SELF>";
 
 $csv_data = fgetcsv($fp, 2000, "$terminated");
 $num = count($csv_data);
 for ( $c=0; $c<$num; $c++ ) {
 
 $field_name[$c] = $csv_data[$c];
 echo $field_name[$c] . "  n";
 
 $table_field_name = "field$c";
 show_field($db,$table,$c,$$table_field_name);
 echo "<br>";
 }
 
 // copy the tmp file for next use
 $dest = "/tmp/csv_file.csv";
 copy($csv_file,$dest);
 
 echo "<input type=hidden name=csv_file value=$dest>n" .
 "<input type=hidden name=table value=$table>n" .
 "<input type=hidden name=terminated value=$terminated>n" .
 "<input type=submit name=submit value=ok></form><p>n";
 
 // when click 'ok' button ,start insert data
 if ($submit == "ok") {
 $NO = 1;
 while ($csv_data = fgetcsv($fp, 2000, "$terminated")) {
 //$num = count($csv_data);
 for ( $c=0; $c<$num; $c++ ) {
 
 $table_field_name = "field$c";
 $first_3 = substr($$table_field_name, 0, 3);
 $first_2 = substr($$table_field_name, 0, 2);
 $val_tmp = ($first_3 == "fid" || $first_3 == "int"
 || $first_2 == "id") ?
 $csv_data[$c] : "'" . $csv_data[$c] . "'";
 $val .= $val_tmp . ",";
 $var .= $$table_field_name . ",";
 }
 $val = substr($val, 0, -1);
 $var = substr($var, 0, -1);
 $query = "INSERT INTO $table ($var) VALUES ($val)";
 $val = "";
 $var = "";
 $q->query($query);
 echo "NO. $NO $query<p>";
 $NO++;
 }
 fclose($fp);
 }
 
 }
 }
 ?>
 |