2016-08-16 6 views
0

一意のフィールドを持つ行を挿入すると、一意のフィールドに入る値を重複する場合に異なる値に変更できますか?一意のキーに値が重複している場合は、別の値を挿入してください。

状況:ユーザーが新しい記事を追加しています。名前は複製できません。何らかの理由で、ユーザーはデータベースにすでに存在する名前を入力します。

「DUPLICATE KEY UPDATE ON」を使用している場合 - (挿入と同じ名前の)前のレコードは、(更新が発生した)他のフィールド内のすべての新しいデータを取得する - よくありません。

フィールドは一意であり、DB内の一致がある場合、挿入時に、「[DUPLICATE]名前」のようなものに挿入されている値を変更されるには何が必要です。

これは、重複の存在を明らかにし、ユーザは単に(おそらく、エラーにより重複として挿入された、)名前を変更します。あなたは(mysqliのでプリペアドステートメントを使用して)のような何かをしなければならない

+0

インサートを試してください。失敗した場合は、一意の値を変更して再度ヒットします。 – tadman

+0

insert文に仲介(select ... ... name = "article name")を含める方法があるので、selectは真(つまり、[duplicate] "文字列で連結名)またはfalse(名前は挿入されたまま)? – bbe

+0

'INSERT INTO ... SELECT ... FROM'は物事なのでしょうか? – tadman

答えて

1

-

SELECT name FROM table WHERE name=? 

バインド変数(私は$articleNameを想定しています)とmysqli_num_rows()との一致があるかどうかを確認、その後、結果を格納します。

1つ以上の行が存在する場合は、アーティクル名の名前を変更します。

$articleName=$articleName."[DUPLICATE]"; 

次に、dbに挿入します。

注:通常、文章はさまざまな方法で作成できるため、同じ記事名はありません。彼らのように、それを検出するか、手動でチェックするための非常にスマートなプログラムを構築することを検討してください。

関連する問題