2

重複の可能性:
「INSERT IGNORE」と「INSERT … ON DUPLICATE KEY UPDATE」

こんにちは人々

$sql1="SELECT * FROM `table` WHERE `user` = '$user'";
$res1=mysql_query($sql1);
if(!$res1||mysql_num_rows($res1)<1){
$sql2="INSERT INTO `table` (`user`) VALUES ('$user')";
$res2=mysql_query($sql2);
if(!$res2){echo 'Yes';}else{echo 'No';}
}
else{echo 'user already exists!';}

2 つのクエリを 1 つに結合できますか?

4

2 に答える 2

3

userUNIQUEに設定すると、各ユーザーのエントリは最大1つになります。ALTER TABLE列を作成するにはUNIQUE

ALTER TABLE `table`
    ADD UNIQUE INDEX `user` (`user`);

そして、次のような単一のクエリが適切です。

$res = mysql_query("INSERT IGNORE INTO `table`(`user`) VALUES( '".mysql_real_escape_string($user) . "')";
echo ( mysql_affected_rows() == 0 ) ? "No" : "Yes";

mysql_affected_rows() .

于 2012-09-29T03:16:17.433 に答える
3

このクエリを使用します。

INSERT INTO USER SELECT * FROM TABLE WHERE user='$user'

tableテーブルとユーザーテーブルの列数は同じでなければならず、それらの型も同じでなければなりません。

あなたも使うことができます

INSERT into user
SELECT * from table 
WHERE user='$user'
AND 
   NOT EXISTS (SELECT * FROM USER 
              WHERE USER = '$user')
于 2012-09-29T03:11:24.297 に答える