2012-04-27 107 views
0

我希望表單更新,如果它們是特定user_ID的行,但如果不是則插入。我已經試過插入...在重複的關鍵更新但失敗悲慘,所以這是我的下一個嘗試。 user_ID不是唯一的索引,但是我的表中的'ID'是並且是一個自動增量字段。 User_ID只是會話基礎的索引。 這是我一直在使用現在的代碼:插入其他更新

if (empty($err)) { 

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


$query="UPDATE thesis SET (`thesis_Name`='$thesis_Name', 
`abstract`='$abstract') WHERE id='$_SESSION[user_id]' 
IF ROW_COUNT()=0 
REPLACE INTO thesis (theis_Name,abstract)VALUES ('$thesis_Name', '$abstract') 
"; 

mysql_query($query) or die(); 
// query is ok? 

if (mysql_query($the_query, $link)){ 

// redirect to user profile 
    header('Location: myaccount.php?id=' . $user_id); 
    } 

目前按提交的時候,我得到一個空白頁。

+0

'$ the_query'似乎沒有被定義。 – DCoder 2012-04-27 19:15:06

+0

由於查詢語法錯誤,正在執行'die()',所以您正在獲得空白頁面。首先,你必須引用值 - 'VALUES('$ thesis_Name','$ abstract')'; – Nadh 2012-04-27 19:16:07

+0

the_query更進一步,我沒有把那個對不起 – user1296762 2012-04-27 19:17:12

回答

2

您是否嘗試過 「REPLACE INTO ...」,而不是 「INSERT INTO ...」

0

REPLACE是你想要的。您將需要定義一個UNIQUE KEYid(如果它不是PRIMARY KEY這是唯一的定義)。

+0

是id是主鍵! – user1296762 2012-04-27 19:25:09

0

REPLACE INTO就是答案。如果您仍然希望使用您的代碼,則在查詢中缺少分號:

$query="UPDATE thesis SET (`thesis_Name`='$thesis_Name', 
`abstract`='$abstract') WHERE id='$_SESSION[user_id]'; 
IF ROW_COUNT()=0 
INSERT INTO thesis (theis_Name,abstract)VALUES ($thesis_Name, $abstract) 
"; 
+0

我可以使用替換來代替插入。但是,在$ abstract)之後我得到一個語法錯誤;預期。感謝您的幫助!! – user1296762 2012-04-27 19:23:34