2012-03-15 45 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

+0

私は、テキスト入力フィールドとtextareaフィールドを持つフォームを持っています。私は、両方を送信ボタンを使用して更新したいと思います。 –

答えて

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

どのように新しいコンテンツ –

+0

とBTWを取得している間、古いコンテンツを保持すると、$ contentからエスケープする必要があります。 ([link](http://www.php.net/manual/en/function.mysql-real-escape-string.php)を参照してください) – user978548

+0

コンテンツを隠し文字にすることができます。 – Anonymous

関連する問題