我是SQL和PHP的新手,但是如果用户的ip不存在条目,我想将用户添加到列表中。如果该条目存在,我只想更新其用户名。
我可以在&#34之外执行这两项操作;如果存在"声明没有打嗝,但它显然创造了很多重复。当我把它包装在"如果存在"声明查询停止做任何事情。
我知道有关于这个问题的一些问题,但我已经尝试了大部分建议,如果还有其他方法可以做到这一点,我很乐意考虑,谢谢。
<?php
$username = strval($_GET['username']);
$userip = $_SERVER['REMOTE_ADDR'];
$con = mysqli_connect("localhost", "ramendev_jctwood", "M1n1flam3", "ramendev_jctwood") or die ("Failed to connect to MySQL: " . mysqli_connect_error());
mysqli_query($con, "IF EXISTS (SELECT 1 FROM Users WHERE Userip='$userip')
UPDATE Users SET User='$username' WHERE Userip='$userip'
ELSE
INSERT INTO Users (User, Userip) VALUES ('$username', '$userip')
");
?>
答案 0 :(得分:2)
你可以试试这个:
IF (SELECT COUNT(*) FROM Users WHERE Userip='$userip') > 0
UPDATE Users SET User='$username' WHERE Userip='$userip'
ELSE
INSERT INTO Users (User, Userip) VALUES ('$username', '$userip')
答案 1 :(得分:0)
尝试这个
$query = "SELECT * FROM Users WHERE Userip='$userip'";
$check = mysql_query($query);
if(mysql_num_rows($check)) {
$existdata = mysql_fetch_array($check);
$newquery = "UPDATE Users SET User='$username' WHERE Userip='{$existdata['Userip']}'";
} else {
$newquery = "INSERT INTO Users (User, Userip) VALUES ('$username', '$userip')";
}
$execute = mysql_query($new_query);
if($execute){
echo "Success";
} else {
echo mysql_error();
}
答案 2 :(得分:0)
当您拥有主键http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html时,以下是doc告诉我们的内容:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
答案 3 :(得分:-1)
,您可以使用REPLACE命令。
REPLACE INTO users set User='$username' , Userip='$userip'
字段Userip必须是唯一索引ou主键