<?php
//数据下标为临时表对应的字段,其值为要插入表对应的字段
//如A表中的XH 对应B表中的base_account字段
$list=array(
                        'XH'       =>'base_account',
                        'XM'       =>'base_name',
                        'KSH'      =>'base_KSH',
                        'SFZH'     =>'base_SFZH',
                        'RXRQ'     =>'base_RXRQ',
                        'BJYJL'    =>'base_BJYJL',
                        'ZSBH'     =>'base_ZSBH',
                        'ZSXLH'    =>'base_ZSXLH',
                        )/*算法一*/
/*listarray.php文件为定义一个数组,与临时表的字段进行匹配,如果临时表字段与数组
   的下标相同,则取出其字段及记录,现已顺利从数据源中把数据导入临时表,临时表的结
   构及数据与数据源一致
  */
require_once('listarray.php');//连接到数据库
$db= new mysqli("localhost","root","123456","dbf");/*查找临时表,因为导入的数据要向几个表中写入数据,所以现在先把数据导入临时表,
   临时表跟数据源的结构及数据一致
  *///取得临时表的结构信息
  $sqltemp="describe $temptable";
  $resulttemp=$db->query($sqltemp);
  if(!$resulttemp)
  {   
     echo $db->error;                       
     exit;
  }
  else
  {
     $insertfield="";
     $valuefield="";
     while ($rowtemp=$resulttemp->fetch_object())
        {
           //临时表的字段
           $field=$rowtemp->Field;         //检测是否与指定数组的下标值与查询所得的字段值相同
         if(array_key_exists($field,$list))
        {
           //要插入数据表的字段名称,从数组中取得
           $insertfield.=$list[$field].",";           //取得临时表的记录                                       
           $valuefield.="'".$row->$field."'".",";
         }
   }
   
$sql= "select * from temptable ";
$result = $db->query($sql);
while($row=$result->fetch_object())
{   
        $insertfield=substr($insertfield,0,(strlen($insertfield)-1));
        $valuefield=substr($valuefield,0,(strlen($valuefield)-1));
   $sql2="insert into base($insertfield) values ($valuefield);";
}       
//以下执行sql语句向数据表中写入数据这程序到后面的$valuefield是空的,取不到值?>

解决方案 »

  1.   

    算法二<?php
    算法二,虽然能执行,但感觉不好,请指教
    /*listarray.php文件为定义一个数组,与临时表的字段进行匹配,如果临时表字段与数组
       的下标相同,则取出其字段及记录,现已顺利从数据源中把数据导入临时表,临时表的结
       构及数据与数据源一致
      */
    require_once('listarray.php');//连接到数据库
    $db= new mysqli("localhost","root","123456","dbf");/*查找临时表,因为导入的数据要向几个表中写入数据,所以现在先把数据导入临时表,
       临时表跟数据源的结构及数据一致
      */
    $sql= "select * from temptable ";
    $result = $db->query($sql);
    while($row=$result->fetch_object())
    {
      
      //取得临时表的结构信息
      $sqltemp="describe $temptable";
      $resulttemp=$db->query($sqltemp);
      if(!$resulttemp)
      {   
         echo $db->error;                       
         exit;
      }
      else
      {
         $insertfield="";
         $valuefield="";
         while ($rowtemp=$resulttemp->fetch_object())
            {
               //临时表的字段
               $field=$rowtemp->Field;         //检测是否与指定数组的下标值与查询所得的字段值相同
             if(array_key_exists($field,$list))
            {
               //要插入数据表的字段名称,从数组中取得
               $insertfield.=$list[$field].",";           //取得临时表的记录                                       
               $valuefield.="'".$row->$field."'".",";
             }
       }
            $insertfield=substr($insertfield,0,(strlen($insertfield)-1));
            $valuefield=substr($valuefield,0,(strlen($valuefield)-1));
    }       
       $sql2="insert into base($insertfield) values ($valuefield);";
      //以下为执行sql语句向数据表中写入数据
      ...........
    }