选择表的最后受影响的行,以便立即选择插入到另一个表中

时间:2012-11-22 02:24:07

标签: php mysql

如果是已批准或已拒绝,则需要基于条件。提交具有25行30个字段的网格类型的表单以进行批量插入。最后25个插入的行将插入到temp_Orders表中,然后根据if approve,相同的数据(temp_Orders中最后插入的行)需要立即复制到real_Orders。

$query = "insert into temp_users (fname,sname,lname,email,dob,date_signup,date_expire) values ";    

$count = count($_POST['fname']);

for($x=0;$x < $count; $x++)     
{

    $fname = $_POST['fname'][$x];
    $sname = $_POST['sname'][$x];
    $lname = $_POST['lname'][$x];
    $dob = $_POST['dob'][$x];
    $email = $_POST['email'][$x];

    echo $fname . $sname . $lname . $dob . $email . '<br>';

    $emty_tbl = "TRUNCATE temp_users";

    $result_emty_tbl = mysql_query($emty_tbl);
    if(!$result_emty_tbl){
        die(mysql_error());
        @mysql_free_result($result_emty_tbl);
    }

    $query .= "(
        '$fname', 
        '$sname',
        '$lname', 
        '$email', 
        '$dob',
        '$today',
        '$nextyear')";

    /* If not last iteration, add a comma and a space */
        if ($x < ($count - 1)) {
        $query .= ", ";
    }


    $result = mysql_query($query);


}
if(!$result){
    die(mysql_error());
    @mysql_free_result($result);
} else {

    $totalRID = mysql_affected_rows();
    $lastRID = mysql_insert_id();

    echo "Total records <b>" . $totalRID . " </b>entered into the database!" . "<br>";                                  
    echo "Current record number <b>" . $lastRID . " </b>entered into the database!" . "<br>";
    echo "<form name='postbackid' method='post'>
        <input type='hidden' name='lastrecord' value='$lastRID'>
        <input type='button' value='Approved' name='approved' onclick='return Approved();'>
        <input type='button' value='Declined' name='declined' onclick='return Declined();'>                                       
        </form>";       

}   






    }
}



$postbackid=$_POST['lastrecord'];
echo $postbackid;


$sqlinsert = "INSERT INTO users (fname, sname, lname, dob, email, date_signup, date_expire)
    SELECT fname, sname, lname, dob, email, date_signup, date_expire
    FROM temp_users 
    WHERE id='$postbackid'";

$resultinsert = mysql_query($sqlinsert, $link);

1 个答案:

答案 0 :(得分:1)

正如samimi_it所说的那样 - &gt; mysql_insert_id()只跟踪最后插入的id(uid) 因此,你需要:

  1. 跟踪代码中的行 - 简单易行,但问题最多
  2. 更改处理数据的方式,在临时订单行上添加一个额外的列,例如ref / order_no等,并将其保留在您的代码中,此后如果批准的简单副本运行查询,则插入real_orders(选择其中order_no = {saved order_no})
  3. 或删除冗余数据,有一个表“订单” 包括新栏目; approved int 0 = false,1 = true和order_no(引用订单) 将行插入到批次为= 0的orders表中。 然后一旦批准简单,请执行更新订单设置approved = 1其中order_no = {order_no_from_code}。
  4. 希望这能指出你正确的方向。