SQL:如果存在,则更新else插入

时间:2014-08-29 16:17:48

标签: javascript php html sql

我是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')
                            ");
?>

4 个答案:

答案 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)

在mysql中

,您可以使用REPLACE命令。

REPLACE INTO users set User='$username' , Userip='$userip'

字段Userip必须是唯一索引ou主键

了解更多信息 http://dev.mysql.com/doc/refman/5.5/en/replace.html