2012-10-22 38 views
0

我剛寫了這段代碼,直到我意識到我不能更新一個字段而不更改serialnr爲某個不存在的東西。PHP更新:檢查serialnr是否已經存在於數據庫中返回是>無法更新

if (isset($_POST['update'])) 
{ 
    $errormsg = ""; 
    $errorcontrol = " 
       SELECT serialnr 
       FROM item 
       WHERE serialnr='$_POST[serialnr]' 
       "; 
    $result=mysql_query($errorcontrol); 
    if (mysql_num_rows($result) == 1) 
    { 
     $errormsg= "<p id='notification'>Duplicate entry set.</p>"; 
    } 
    else 
    { 
     $UpdateQuery = " 
        UPDATE item SET 
        itembrand='$_POST[itembrand]', serialnr='$_POST[serialnr]', itemname='$_POST[itemname]', itemgroupid='$_POST[itemgroupid]', addinfo='$_POST[addinfo]' 
        WHERE itemid='$_POST[itemid]' 
        "; 
     mysql_query ($UpdateQuery) ; 
    } 
} 

如果我會用「新增」部分的代碼,這將很好地工作:當它已經存在不加。

但是,如果serialnr已經存在,我該如何更新?

+0

請使用搜索功能。你不是第一個遇到這個問題的人。謝謝! – hakre

回答

0

的語法以下線路需要是,你錯過了在$_POST鍵引號,

1. $errorcontrol = " 
      SELECT serialnr 
      FROM item 
      WHERE serialnr='$_POST['serialnr']' 
      "; 



2.  $UpdateQuery = " 
       UPDATE item SET 
       itembrand='$_POST['itembrand']', serialnr='$_POST'[serialnr']', itemname='$_POST[itemname]', itemgroupid='$_POST['itemgroupid']', addinfo='$_POST['addinfo']' 
       WHERE itemid='$_POST['itemid']' 
+0

隨着引號設置我得到錯誤。我的PHP想要它沒有報價。也許版本差異?無論如何,查詢正在工作。我只需要另一種方法來檢查存在。不檢查它是否已經存在,但檢查它是否會在更新之後存在兩次或類似的東西。這樣它可以讓我更新一個未觸及的serialnr的信息。也許有任何想法? –

+0

表'item'的主鍵是什麼? –

+0

itemid = primary + AI - serialnr =唯一索引 –

相關問題