1

这对于基于条件的情况(如果已批准或已拒绝)是必需的。提交具有 25 行 30 个字段的网格类型的表单以进行批量插入。最后插入的 25 行将插入到 temp_Orders 表中,然后根据 if 批准,需要立即将相同的数据(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);
4

1 回答 1

1

正如 samimi_it 所说 -> mysql_insert_id() 只会跟踪最后插入的 id(uid) 因此您需要:

  1. 跟踪代码中的行 - 简单的出路,但问题最多
  2. 更改您处理数据的方式,在您的临时订单行中添加一个附加列,例如 ref/order_no 等,并将其保留在您的代码中,然后如果获得批准的简单副本运行查询,则插入 real_orders(选择 where order_no = {saved order_no })
  3. 或通过让一个表“订单”包含新列来删除冗余数据;approved int 0 = false, 1 = true 和 order_no(引用订单)将行插入到 orders 表中,approved = 0。然后一旦批准简单,更新订单集批准 = 1 where order_no = {order_no_from_code}。

希望这会为您指明正确的方向。

于 2012-11-22T07:27:51.993 回答