我在向MySQL中添加条件时遇到了一些困难。我一直在尝试创建一个查询,它将遍历所有标题为电子邮件的列,如果它存在,我想做这样的事情: 如果存在电子邮件,我希望它将列的现有值正确并添加php变量$ correct。但是,如果电子邮件不存在,那么我希望它在列电子邮件中添加值为$ email的新记录,并将$ correct更正为正确的列。任何帮助将不胜感激 这是我拥有和不起作用的东西:
IF (SELECT * FROM facebookqs WHERE email = '$email' > 0)
UPDATE facebookqs SET correct = correct + '$correct' where email ='$email'
Else
Insert into facebookqs (email, correct) VALUES ('$email', '$correct')
答案 0 :(得分:4)
假设email
有UNIQUE
约束,您应该使用INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO facebookqs (email, correct) VALUES ('$email', '$correct')
ON DUPLICATE KEY UPDATE correct = correct + '$correct'
另请参阅我对其他Stack Overflow问题的回答:INSERT IGNORE vs INSERT … ON DUPLICATE KEY UPDATE
答案 1 :(得分:2)
您遗失了EXISTS
语句以及THEN
END IF
和IF
IF (EXISTS(SELECT * FROM facebookqs WHERE email = '$email')) THEN
UPDATE facebookqs SET correct = correct + '$correct' WHERE email ='$email';
ELSE
INSERT INTO facebookqs (email, correct) VALUES ('$email', '$correct');
END IF;
答案 2 :(得分:0)
您是否只需要选择电子邮件列?或者您有多个包含电子邮件地址的列?如果您有多个包含电子邮件的列,那么您需要说明col1Email ='$ email'或col2Email ='$ email'...等等。要获取行的计数,请尝试 从facebookqs中选择COUNT(*),其中col1Email ='$ email'或col2Email ='$ email'。
答案 3 :(得分:0)
使用REPLACE
方法,在此处说明:http://blogs.coldbuffer.com/inserting-or-updating-records-using-mysql-replace来自他们的示例:
REPLACE INTO pet (id, type, name) VALUES(1, 'Dog', 'Pluto');
给出你的例子应该是(还没有测试过)
REPLACE INTO facebookqs (email, correct) VALUES ('$email', '$correct');