2012-04-28 43 views
0

我在使用下面的代碼時,user_id沒有被設置爲唯一的,並且它使用相同的user_id輸入了兩次相同的數據。所以我把它設置爲獨特的,現在只是得到錯誤,查詢失敗。 所有幫助是極大的讚賞:(插入其他更新時添加重複行

if (empty($err)) { 
     $thesis_Name = mysql_real_escape_string($_POST['thesis_Name']); 

     $abstract = mysql_real_escape_string($_POST['abstract']); 


     // insert into the database 
     $the_query ="SELECT * FROM thesis WHERE user_id='$_SESSION[user_id]'"; 
     $testResult = mysql_query($the_query) or die('Error, query failed'); 

     if(mysql_fetch_array($testResult) == NULL){ 

      //insert... 
      $the_query ="INSERT INTO thesis (`user_id`,`thesis_Name`,`abstract`) 
    VALUES ($user_id, $thesis_Name, $abstract)"; 
      $result = mysql_query($the_query) or die('Error, query failed') ; 
     } 
    else{ 

      //update... 
    $the_query = "UPDATE thesis 
    SET thesis_Name='$thesis_Name', abstract='$abstract' 
    WHERE user_id='$_SESSION[user_id]'"; 
      $result = mysql_query($the_query)or die('Error, query failed'); 
     } 

    // query is ok? 
    if (mysql_query($the_query, $link)){ 
     // redirect to user profile 
    header('Location: myaccount.php?id=' . $user_id); 

    } 

我也曾嘗試

$the_query = "INSERT INTO thesis (`user_id`,`thesis_Name`,`abstract`) 
VALUES ($user_id, $thesis_Name, $abstract) 
ON DUPLICATE KEY UPDATE thesis_Name=VALUES(thesis_Name), abstract=VALUES(abstract)"; 
+0

嘗試修改'模具()'語句,並給予一個唯一的消息爲每個錯誤類型,看看那裏的錯誤是提高 – 2012-04-28 12:16:07

+0

它插入查詢 – user1296762 2012-04-28 12:18:41

回答

2

使用對重複密鑰更新

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

例:

INSERT INTO thesis (`user_id`,`thesis_Name`,`abstract`) 
VALUES ($user_id, $thesis_Name, $abstract) 
ON DUPLICATE KEY UPDATE thesis_Name=VALUES(thesis_Name), abstract=VALUES(abstract) 

這基本上處理重複檢查和選擇MySQL和MySQL之間的所有插入和更新,這是快得多(約2倍)。作爲獎勵,VALUES()函數允許您從插入的行中檢索值,以便您不必提供值兩次,並且多行插入可以正常工作。

在響應編輯到OP:

您必須指定各列的UPDATE子句中改變。如果你想更新thesis_Name和abstract,那麼你必須指定它們。如果您只指定導致更新的唯一密鑰,那麼它只會更新,而這很可能什麼也不做!

+0

我用這一點,但它並不不斷更新 – user1296762 2012-04-28 12:17:52

+0

你指定當您以前使用它時更新的值? – Brilliand 2012-04-28 12:21:39

+0

這現在只是刷新論文頁面 – user1296762 2012-04-28 12:30:32