取字段数多的表,将其所有字段名做成一个数组,将要插入的字段做为一个数组
假设插入字段如下
$inert_arr = ("name"=>"ice","title"=>"test");
假设所有字段如下:
$field_arr = array("name","title","time","study_0","study_1","study_2");
$sql = "insert into tbl (";
$tmp = ""; 
foreach ($field_arr as $v) 
{
    if (isset($insert_arr[$v]))
    {
        $tmp .= $v."',";
    }
}
//去掉最后一个逗号
$value = substr($value, 0, strlen($value)-1);
$sql .= $tmp.")";
$sql .= " VALUES(";
$value = ""; 
foreach ($field_arr as $v) 
{
    if (isset($insert_arr[$v]))
   {
    $value .= "'".$insert_arr[$v]."',";
   }
}
//去掉最后一个逗号
  $value = substr($value, 0, strlen($value)-1);
  $sql .= $value.")";
  mysql_query($sql);

解决方案 »

  1.   

    是这个意思吗?
    待操作的字段
    $fields = 'name,title,time,study_0,study_1,study_2';产生的查询串
    $sqlstr = "select $test from mytable_a where id=$id";查询
    $rs = mysql_query($sqlstr);上面的和你的一样,接下来请注意看
    构造变量列表
    $vars = "\$".join(",\$",split(",",$fields));
    构造值变量列表
    $values = "'\$".join("','\$",split(",",$fields))."'";
    读取数据
    eval("list($vars)=mysql_fetch_row(\$other);");
    构造sql串
    $sql = "insert into mytable_b ($fields) value ($values)";
    执行插入
    mysql_query($sql);
      

  2.   

    to xuzuning(唠叨) 别的都没有问题,就是到了$sql = "insert into mytable_b ($fields) value ($values)";就有问题了.出现的结果是我echo $sql;
    insert into mytable_b (name,title,time,study_0,study_1,study_2) value ('$name','$title','$time','$study_0','$study_1','$study_2')就成了这样的情况.而正常情况下,'$name'应该是'张三'这样的内容才是.烦请再帮看一下,好吗?谢谢
      

  3.   

    不好意思,写错了
    $sql = "insert into mytable_b ($fields) value ($values)";
    应写作:
    $sql = eval("return \"insert into mytable_b ($fields) value ($values)\";");
      

  4.   

    问题解决了!!!!把正确的情况说一下:)以感谢大家的厚爱!!这个问题的开始是为了能够解决任意两个有相同记录的数据库之间数据的输入问题.<?php
    //假设两个库中需要输入数据的字段如下$fields = 'name,title,time,study_0,study_1,study_2';
    $id=3;  //假设每次输入一条数据//产生的查询串
    //设mytable_a为读取数据的库
    $sqlstr = "select $fields from mytable_a where id=$id";//查询
    $rs = mysql_query($sqlstr);//构造变量列表
    $vars = "\$".join(",\$",split(",",$fields));//构造值变量列表
    $values = "'\$".join("','\$",split(",",$fields))."'";//读取数据
    eval("list($vars)=mysql_fetch_row(\$rs);");//将数据赋值
    //这是抄手册上的,为什么这么弄我也搞不清楚,惭愧.
    eval( "\$values = \"$values\";" );//构造sql串
    $sql = "insert into mytable_b ($fields) value ($values)";//执行插入
    mysql_query($sql);
    ?>