为了账号安全,请及时绑定邮箱和手机立即绑定

SQL-如果存在,则将更新插入其他

SQL-如果存在,则将更新插入其他

倚天杖 2019-11-12 10:23:19
我想要做的就是INSERT在我的数据库的用户,但IF EXISTS它应该UPDATE排,ELSE INSERT INTO一个新行。Ofcourse我连接到数据库第一和GET的$name,$email并$birthday从URL字符串。$con=mysqli_connect("localhost","---","---","---");// Check connectionif (mysqli_connect_errno())  {  echo "Failed to connect to MySQL: " . mysqli_connect_error();  }$name=$_GET['name']; $email=$_GET['email'];$birthday=$_GET['birthday'];可以,但是只添加新行;mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)VALUES ('$name', '$email', '$birthday')");mysqli_close($con);这是我尝试过的;mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)VALUES '$name', '$email', '$birthday'ON DUPLICATE KEY UPDATE subs_name = VALUES($name), subs_birthday = VALUES($birthday)");mysqli_close($con);和mysqli_query($con,"IF EXISTS (SELECT * FROM subs WHERE subs_email='$email')    UPDATE subs SET subs_name='$name', subs_birthday='$birthday' WHERE subs_email='$email'ELSE    INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')");mysqli_close($con);和mysqli_query($con,"IF NOT EXISTS(SELECT * FROM subs WHERE subs_email='$email')BeginINSERT INTO subs (subs_name, subs_email, subs_birthday)VALUES ('$name', '$email', '$birthday')End");mysqli_close($con);但是它们都不起作用,我在做什么错?任何帮助是极大的赞赏!
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

这是一篇有趣的文章,深入研究了我不知道的MySQL存储引擎API的一些非常底层的细节,因此感谢您使我快速入门。但是,我仍然希望尽可能清楚地表达我想要的逻辑,以帮助将来进行维护:只有当上述其他问题不相关并且造成重大性能影响REPLACE时,我才考虑切换到我真正打算的时候更新。请记住Knuth的格言:“ 过早的优化是万恶之源”

查看完整回答
反对 回复 2019-11-12
?
MM们

TA贡献1886条经验 获得超2个赞

我以为你的意思是该VALUES()条款。该VALUES()函数只是采用VALUES()您希望使用的子句中其值的列名称:它只是防止您重复自己的简写;您不必使用它。您可以根据需要直接在SET子句中使用函数,例如SET column = MYFUNCTION()

查看完整回答
反对 回复 2019-11-12
  • 2 回答
  • 0 关注
  • 738 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信