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!';}

可以将两个查询合二为一吗?

4

2 回答 2

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 回答
3

如果您将列设置userUNIQUE,则​​每个用户最多有一个条目。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 回答