0 レビュー
1 回答
PHPでのSQL挿入の重複を防ぐ
<脇>
答えへのリンク
この質問にはすでに回答があります:
わからない
0
レビュー
答え :
解決策:
まず、主キーを特定する必要があります。これは通常、ある種のIDフィールドです。ファーストネームとラストネームが同じ人のインスタンスが非常に多いため、FirstNameLastNameのペアを使用しないことをお勧めします。 「KevinKline」は、アクターとSQL Server MVPの両方の名前です(おそらくもっとたくさんあります)。
FirstName LastNameを盲目的にテーブルに挿入する場合は、RDBMSに依存しないクエリは
のようになります。 INSERT INTO contact (FirstName, LastName) VALUES ($FirstName, $LastName) WHERE NOT EXISTS
(SELECT 1 FROM contact where FirstName = $FirstName and LastName = $LastName);
(免責事項:投稿の内容に応じてフォーマットしなかったのはわかっています。これは次の理由によるものです)
ただし:
コードはSQLインジェクション攻撃に対しても脆弱です。 PHPメソッド sqlsrv_query 「params」引数に特別な注意を払います。
さらに、「Kevin Kline」の例に戻ると、これは最初の「KevinKline」のみを挿入します。ファクトテーブルのProfessionなどの他のディメンションに関連付けられるスタースキーマのディメンションとして「KevinKline」を追加する場合は、これで問題ないと思います。ただし、それがアプリケーションドメインでない場合は、適切なデータを正確に追跡できるように、テーブルキーとして何を使用するかを決定することを強くお勧めします。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。