1

この質問は何度も聞かれ、答えられました。
しかし、私の問題はより具体的で、適切な解決策を見つけることができませんでした。

私のテーブル(ページという名前)はそのようなものです。

id (int)
title (text)
content (text)
slug (text)

スラッグ(私はそれをユニークに変換しました)が投稿されたものと同じである場合、レコードを更新する必要があります。

つまり、スラッグレコードに基づいてレコードを更新/挿入する必要があります。

例えば。現在のデータ:

  id  |  title  |  content  |  slug  |
--------------------------------------
  1  |  MainPage| some html | mainpage

投稿されたデータがtitle=ChildPage, content=html.., slug=mainpage以前のレコード(タイトルとコンテンツのレコード)を更新する必要がある場合、データが更新されている場合はtitle=MainPage, content=html.., slug=other_slug、このデータを新しいIDで新しいものとして挿入する必要があります。

アップデート

スラッグレコードはUNIQUEキーに変換されました。

4

1 に答える 1

3

私が想像できる最も適切なことは、スラッグ列に一意のインデックスを作成することです

ALTER TABLE pages ADD UNIQUE KEY slug;

理由は単純です。これが一意に制約されていない場合、「メインページ」を持つスラッグが複数存在する可能性があります...どれを更新する必要がありますか?

次に、ON DUPLICATEKEYUPDATE句を使用します。

INSERT INTO pages 
VALUES (NULL, $title, $content, $slug) ON DUPLICATE KEY UPDATE content=$content
于 2012-07-09T22:46:57.803 に答える