簡體   English   中英

選擇一個表的最后受影響的行以立即選擇插入另一個表

[英]select last affected rows of a table for an immediate select insert into another table

對於基於條件的情況(如果批准或拒絕),這是必需的。 包含25行30字段的表格的網格類型將提交以進行批量插入。 最后插入的25行將插入到temp_Orders表中,然后根據是否批准,將相同的數據(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);

正如samimi_it所說的-> mysql_insert_id()將僅跟蹤最后插入的id(uid),因此您將需要:

  1. 跟蹤代碼中的行-簡便的方法,但是存在的問題最多
  2. 更改處理數據的方式,在臨時訂單行上添加一列,例如ref / order_no等,並將其保留在代碼內,此后,如果批准的簡單副本運行查詢,請插入real_orders(選擇order_no = {saved order_no })
  3. 或通過使一個表的“訂單”包含新列來刪除冗余數據; 批准的int 0 =否,1 =正確,並且order_no(引用訂單)將行插入認可的= 0的訂單表中。然后,一旦批准簡單,就進行更新批准設置為1的訂單集,其中order_no = {order_no_from_code}。

希望這能為您指明正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM