我想要做的就是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的格言:“ 过早的优化是万恶之源”。
MM们
TA贡献1886条经验 获得超2个赞
我以为你的意思是该VALUES()
条款。该VALUES()
函数只是采用VALUES()
您希望使用的子句中其值的列名称:它只是防止您重复自己的简写;您不必使用它。您可以根据需要直接在SET
子句中使用函数,例如SET column = MYFUNCTION()
。
添加回答
举报
0/150
提交
取消