2012-03-15 72 views
1

我得到了一個PHP和MySQL問題,當我更新標題時我沒有問題。但在更新內容時,它不會更新。如果內容發生變化,MySQL不會更新

任何想法出了什麼問題。

$query = mysql_query("UPDATE about SET headline='$headline' WHERE content='$content'") 
or die(mysql_error()); 

$query = mysql_query("SELECT * FROM about ORDER BY id DESC"); 
while ($row = mysql_fetch_assoc($query)) 
{ 
    $id = $row['id']; 
    $headline = $row['headline']; 
    $content = $row['content']; 

    header("location: ../"); 
} 

我編碼採用PHP和和MySQL服務器。

我更喜歡在更新時只調用一次數據庫的解決方案。

+0

何時以及如何更改'內容'字段? – user1027167 2012-03-15 13:05:15

+0

我有一個文本輸入字段和一個textarea字段的表單,我希望他們都使用提交按鈕更新。 – 2012-03-15 13:12:06

回答

3

使用UPDATE語句時,WHERE子句用於指定要更新的記錄。在以下情況下,如果你修改這兩個標題及內容:

UPDATE about SET headline='$headline' WHERE content='$content' 

上面的查詢試圖更新其中內容字段等於新的內容標題字段。現有內容不會與新內容匹配。

你不得不做類似的東西:

UPDATE about SET headline='$headline', content='$new_content' WHERE content='$old_content' 

然而,你通常應該由一個標識符,而不是內容字段中選擇一個記錄。

UPDATE about SET headline='$headline', content='$new_content' WHERE id = $id 

如果更新使用類似內容的領域,你可能會意外地更新內容相同的所有行,而不僅僅是你試圖更新的行。使用唯一標識符允許您只更新指定的行。

您可以在會話中存儲標識符(在服務器端)。

+0

如何在保留舊內容的同時獲取新內容 – 2012-03-15 13:16:11

+0

和順便說一句,您應該避開$ content。 (請參閱[鏈接](http://www.php.net/manual/en/function.mysql-real-escape-string.php)) – user978548 2012-03-15 13:18:13

+0

您可以將內容置於隱藏文本中。 – Anonymous 2012-03-15 13:19:33

相關問題