本人是php新手,基本从来没有接触过,现在有一php+mysql的操作,请高手给点指点。
目的:从表A读取部分数据插入b中,获取刚刚插入b中的 id,将id和a的部分数据插入c.
a表大约有50行,我写的是最简单的,肯定效率不高,另外执行超时,请高手指点。
$result = mysql_query("SELECT  * FROM userinfo ");//从表A即userinfo读数据。
$i=1;
while($row = mysql_fetch_array($result))
  {
  $username=$row['username'];
  $user_pass=$row['user_pass'];
  $user_paycount=$row['user_paycount'];
  $sql="INSERT INTO B (username, password) VALUES ('$username','$user_pass')";
mysql_query($sql,$con);//插入表B$uid = mysql_insert_id(); //读取最新id
$sql="INSERT INTO C (uid, username) VALUES ('$uid','$username')";
 mysql_query($sql,$con);//向表以插入获取的id和a的数据。
 
 echo "已经执行到 " . $i . "<br />";
  $i++;
  
  }

解决方案 »

  1.   

    你的超时设置是多少? 行首加上: set_time_limit(0);  试试。
      

  2.   

    看你例子,两句insert into select语句可以搞定
      

  3.   

    其实不需要用到循环,2条sql语句外加一行SELECT LAST_INSERT_ID();就可以搞定了
      

  4.   

    不好意思,是50万行。大家有好的办法吗,如果用两条insert into select,有没有效率好点的语句。谢谢。
      

  5.   

    50W行,那只能用2条sql语句外加一行SELECT LAST_INSERT_ID();
    或者写个存储过程!
      

  6.   

    我意思你可以试下
    INSERT INTO B (username, password) select username,user_pass as password from A; 
    INSERT INTO C (uid, username) select uid,username from B;
    这两条语句
      

  7.   

    是可以考虑下INSERT INTO ***** select *****