可能重复:
What is the best way to insert into and update a single row table in MySQL?
handling duplicate records in mysql Insert statement如何在数据库中插入时检查重复记录
我有一个将记录插入我的数据库一个PHP Web表单时点击“提交”按钮。然而,我想如果一个记录已经存在于具有相同主键(itemID)的数据库中,插入操作将被中止,并且用户将被警告。
我的 '插入' 代码:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO inventory (itemID, name, itemcategory, qis, reorderlevel, unitcost, sellingprice,
supplier, specifications) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['itemID'], "text"),
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['itemcategory'], "text"),
GetSQLValueString($_POST['qis'], "double"),
GetSQLValueString($_POST['reorderlevel'], "int"),
GetSQLValueString($_POST['unitcost'], "double"),
GetSQLValueString($_POST['sellingprice'], "double"),
GetSQLValueString($_POST['supplier'], "text"),
GetSQLValueString($_POST['specifications'], "text"));
mysql_select_db($database_con1, $con1);
$Result1 = mysql_query($insertSQL, $con1) or die(mysql_error());
$insertGoTo = "insertsuccess.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];}
header(sprintf("Location: %s", $insertGoTo));}
在您的模式中使用唯一键 – hohner
您可以在插入之前进行SELECT操作,包括所有这些$ _POST变量在WHERE条件中。 –
只需注意,从php 5.5.0 http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated开始不推荐使用'mysql'扩展名。如果这是新代码,那么你现在可能想要开关。 –