[英]Update a row if ID exists else Insert
這是一個.php文件的代碼。 列“ memberid”具有唯一索引。 當用戶輸入具有現有成員ID的記錄時,該記錄必須得到更新,否則將創建新行。
我也想顯示一個警報框。 出於測試目的,我以如下方式添加,但未觸發。 沒有消息顯示。
我還想知道是否是自動處理插入/更新的正確方法?
<META http-equiv="refresh" content="2; URL=socialprofile.html">
<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once("../Lib/dbaccess.php");
//Retrieve values from Input Form
$CandidateID = $_POST["inCandidate"];
$SocialProfile = $_POST["inActivities"];
$InsertQuery = "INSERT INTO candidate_db_social (memberid, socialactivities, lastupdated) VALUES (".$CandidateID.",'".$SocialProfile."',now())";
$UpdateQuery = "UPDATE candidate_db_social SET socialactivities='".$SocialProfile."', lastupdated=now() WHERE memberid=".$CandidateID;
try
{
$Result = dbaccess::InsertRecord($InsertQuery);
}
catch(exception $ex)
{
$Result = dbaccess::InsertRecord($UpdateQuery);
echo "<script type='text/javascript'>alert('".$ex."');</script>";
}
?>
您應該使用MySQL ON DUPLICATE KEY子句:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
另請參閱替換:
參見MySQL REPLACE
關鍵字 。 它的工作原理與INSERT
完全相同,但是會基於主鍵覆蓋現有記錄。 請仔細閱讀詳細信息,因為它並不完全等同於嘗試INSERT,然后進行UPDATE。
INSERT ... ON DUPLICATE可能正是您需要的。 想到帶有觸發器或外鍵的情況。 但是語法更長:)
REPLACE INTO candidate_db_social (memberid, socialactivities, lastupdated) VALUES (".$CandidateID.",'".$SocialProfile."',now())";
您可以使用INSERT ... ON DUPLICATE KEY UPDATE語法,如下所示:
insert into t values ('a', 'b', 'c') on duplicate key
update a='a', b='b', c='c'
使用mysql
INSERT INTO table VALUES()
ON duplicate KEY UPDATE ..;
例如:
http://www.mysqlperformanceblog.com/2006/05/29/insert-on-duplicate-key-update-and-summary-counters/
我通常只檢查$ _POST或$ _GET數組中是否存在記錄ID值(取決於情況)。 如果值存在並且是數字,請嘗試使用相應的ID更新該行;否則,請執行以下操作。 如果不執行INSERT查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.