2
PHPを使用すると、MySQLデータベースにレコードが挿入されます。レコードが新しい場合、私はinsert_idを取得しますが、すでに存在する場合は、単一のクエリを使用してIDを取得することはできません。次のクエリの(MySQLインサートを使用)は、存在するレコードのIDを見つけることができません。
の両方が、それはすでに存在しているなら、私はレコードを追加したり、スキップすることができます:
INSERT INTO `emails` (`email`) VALUE ('[email protected]') ON DUPLICATE KEY UPDATE `id`=`id`
INSERT IGNORE INTO `emails` (`email`) VALUE ('[email protected]')
両方のケースで正しい結果を得るための正しい方法は何ですか?
EDIT:ここに私のテーブルの構文は次のとおりです:
CREATE TABLE `emails` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
これは、データが実際に更新されている場合にのみ動作しますです。データが変更されない場合、彼は以前と同じボートに入っています。 – webbiedave
私はこの回答が気に入っています**このアプリケーションの目的が何であるかを知る必要があります**。ユーザー登録の場合、「id」を変更すると大きな問題が発生する可能性があります(つまり、何かを挿入したり既存のデータを変更しようとする前にメールアドレスが存在するかどうかを確認する必要があります)。それでも、私は何かを学んだので+1: – msanford
ありがとうが、私はmsanfordと同意する必要があります。 – inhan