将OICQ数据转成MYSQL数据

  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);

  }

  }

  }

  ?>