プロが教えるわが家の防犯対策術!

PHPで登録機能を作っていますが、登録確認画面で名寄せを使い、同じ情報がDBにある場合は「OOの情報がデータベースにあるため、登録出来ませんでした」というメッセージを表示し、登録確認画面でステイさせたいのですが、どのような文を書くといいのでしょうか?

ネットで調べても参考になりそうなものがありませんでした。

よろしくお願いします。

A 回答 (4件)

実コードが知りたかったんですけど、まぁDB操作に慣れているならいいです。



例えば、リクエストがあり、リクエスト自体の検証などが終わった後に、
SELECT 1 FROM table_name WHERE column_name = value
 table_name:値がバッティングしてはならないテーブル
 column_name:値がバッティングしてはならない列名
 value:値
などと検索して、検索結果が1件得られたならば、登録エラー制御とすればいいでしょう。

insert ignore intoということはMySQLか何かですかね。
ignoreはやったことないので分かりませんが、その場合、SQLの実行結果に、影響を受けたレコード件数が得られると思うので、それでinsertされたかどうかの判断が利きます。
しかしこちらの場合は、何のデータが重複していたかは判断できません。
PDOの場合はPDOStatement::rowCountで得ることができます。
https://www.php.net/manual/ja/pdostatement.rowco …

NGだったデータを把握したいならば、先に記した通り、INSERTするより前に、まずはそのデータが存在するのか、というSELECT問合せをするしかありません。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

selectで同じ値が一件えられたら反応するように書けばいいんですね。

わかりました。

ありがとうございました。

お礼日時:2021/02/03 16:18

登録ができなかった時点で、selectを使ってすでにあるデータと


投入データを比較して、エラーになる箇所を選定すればいいでしょう?
    • good
    • 1

ああ、すみません、どういう文言を書くとスマートか、と捉えてしまいました。



DBに、入力された情報が登録されているかを問い合わせれば済むと思います。
現状、どのようなコードでDBへのレコード登録処理を書いていますか?
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

レコード登録処理は現状、insert ignore intoでやっています。

何のデータが重複しているかわかるようにしたいです。

お礼日時:2021/02/03 09:54

すでに登録されています

    • good
    • 1
この回答へのお礼

回答ありがとうございます。

すでに登録されてますとおっしゃってますが、どういうことでしょうか?

私の知りたいことは簡単にいうと、名寄せの方法です。

お礼日時:2021/02/03 09:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!