簡體   English   中英

第一個表單提交插入行后續提交更新同一行

[英]first form submit insert row subsequent submits update the same row

有沒有人有我的問題的另一種解決方案。

單擊我的提交按鈕后,我想在MYSQL數據庫中插入該行。 但是表單會驗證錯誤條目,因此如果發現錯誤,則用戶必須再次單擊“提交”按鈕。 現在我想更新數據庫中的行。

我正在使用會話變量來實現這一點,但我現在不能,因為該網站使用Realex支付網關,所以當付款成功時我沒有辦法取消設置會話,因為此代碼在他們的網站上。

所以這就是我所擁有的:

if(!isset($_SESSION['jid']))    
{                   
$sql = "INSERT INTO ...";
            $result = $db->query($sql);
            if($result === false)
                sql_failure_handler($sql, $db->error);
            $jid = $db->insert_id;
            $_SESSSION["jid"] = $jid;
        }
        else    
        {
            $sql = "UPDATE  ... WHERE ID = '$_SESSION['jid']";
            $result = $db->query($sql);
            if($result === false)
                sql_failure_handler($sql, $db->error);
        }
       }

這段代碼是為了讓我知道我需要什么。

我在考慮使用post變量:

if(empty($_POST['jid']))    // insert on first click of one of the buttons  
        {                   
            $sql = "INSERT INTO table ...";
            $result = $db->query($sql);
            if($result === false)
                sql_failure_handler($sql, $db->error);
            $jid = $db->insert_id;
        }
        else
        {
            $sql = "UPDATE table SET ... WHERE ID = '" . $db->real_escape_string($_POST['jid']) . "'";
            $result = $db->query($sql);
            if($result === false)
                sql_failure_handler($sql, $db->error);
        }

然后有一個隱藏的變量,但不確定這將工作。 也許最初設置jid值的jquery?

隱藏的領域是一個不錯的選擇。

在表單中包含一個空的隱藏字段:

<input type="hidden" name="jid" value="" id="jid">

在PHP中。 如果$ _POST ['jid']為空,請插入新行並返回包含新創建行的ID的響應:

$sql = "INSERT INTO table...";
$result = $db->query($sql) or die('Errant query:  '.$sql);
$newid = $db->insert_id;
header('Content-type: application/json');
echo '{"message":"new field added", "id":"'.$newid.'"}';

在客戶端,如果成功發布。 更新隱藏字段的值,即

$('#jid').val(response.id)

后續帖子現在將有jid

另外一個選項:

在PHP中,如果沒有插入,檢查數據庫中是否已存在ID,如果是更新。

$sql = "SELECT id FROM table WHERE id = '$jid' LIMIT 1";
$result = $db->query($sql) or die('Errant query:  '.$sql);
$row_cnt = $result->num_rows;

if($row_cnt > 0){
  UPDATE
}
else{
  INSERT
}

暫無
暫無

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

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