我对SQL和PHP很新,但是我想添加一个用户到列表中,如果一个入口不存在与他们的ip。如果条目确实存在,我只想更新他们的用户名。SQL:如果存在,更新else插入
我可以在没有打嗝的情况下在“if exists”语句之外执行这两个操作,但它显然会创建很多重复项。当我将它包装在“if exists”语句中时,查询将停止执行任何操作。
我知道关于这个问题有几个问题,但我已经尝试了大部分的建议,如果有另一种方法来做到这一点,我会很乐意考虑它,谢谢。
<?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')
");
?>
为什么不插入...重复密钥更新?任何你为什么不检查SQL错误? 'mysqli_query(...)或者死(mysqli_error())'会告诉你究竟是什么错误。 – 2014-08-29 16:19:09
尝试在UPDATE行的末尾添加分号,并在INSERT行的末尾添加分号。 – 2014-08-29 16:23:33
许多SQL DBMS都有扩展来处理这个问题。我不确定哪个提供了@Marc B的'重复键更新',但SQLite有'insert或replace into',我相信还有其他的变种。 – 2014-08-29 16:23:50