SQL更新否则插入不起作用[重复]
Posted
技术标签:
【中文标题】SQL更新否则插入不起作用[重复]【英文标题】:SQL Update else Insert not working [duplicate] 【发布时间】:2016-09-21 10:09:58 【问题描述】:我正在尝试更新 SQL 数据库中的用户详细信息,但是如果该用户的一行不存在,我需要为该用户创建一个(每个用户只有一个) 它只是不更新也不插入。 这是以下脚本。
$sql = "IF EXISTS (SELECT * FROM user_details WHERE user_id = $user_id)
UPDATE user_details SET work = $work, education = $education, location = $location, relationship = $relationship, phone = $phone, email = $email, website = $website, language = $language, skill = $skill, tumbkr = $tumblr, instagram = $instagram, skype = $skype, facebook = $facebook, youtube = $youtube, twitter = $twitter, about = $about, user_id = $user_id WHERE user_id = $user_id
ELSE
INSERT INTO user_details (work, education, location, relationship, phone, email, website, language, skill, tumblr, instagram, skype, facebook, youtube, twitter, about, user_id)";
$q = $conn->prepare($sql);
$q->execute();
【问题讨论】:
你应该了解prepared statements 查找insert...on duplicate key update语法。 准备好的语句不会花费很长时间来编写。你已经得到了 90%。 只要它是主键(即唯一),那么在重复键上插入就可以了。如果不是,你应该问为什么这不起作用。您当前的 SQL ......不是很好,而且损坏了。 @JonStirling 是的,我认为 ... 不太好,并且损坏 是正确的术语 :-) 【参考方案1】:如下操作:
INSERT INTO table_name (field1,field2) VALUES (val1,val2)
ON DUPLICATE KEY UPDATE field_name=VALUE;
【讨论】:
没有任何解释该语句的作用以及该语句需要满足什么要求,这个答案几乎是无用的。 代码很简单,我认为不需要解释。 它确实需要解释,因为除非满足特定要求,否则上述代码将不起作用。无论如何,这个问题已经在 SO 上回答过很多次了。 所以,在这种情况下,用适当的解释编辑我的答案...... :) 毫无意义,重复的主题列出了所有可能的解决方案以及 mysql 文档的链接。以上是关于SQL更新否则插入不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章