我正在尝试与Facebook PHP APK一起制作邀请系统。我基本上想要的是当你邀请你的朋友时,Facebook会使用包含用户邀请的朋友的用户ID的数组重定向回你的网站。我想循环遍历它们并将邀请插入数据库。循环和all都已受到控制,但数据库查询不是。
这是我当前的查询:
SELECT `iID` FROM `invitations` WHERE `iSender` = 'SENDER' AND `iReceiver` = 'RECEIVER';
如果返回零行我处理此查询:
INSERT INTO `invitations` (`iSender`, `iReceiver`) VALUES ('SENDER', 'RECEIVER');
然后我检查他们是否已经注册了我的网站:
SELECT `uID` FROM `users` WHERE `uOAuthID` = 'RECEIVER';
如果它返回多于1行,则运行以下和最终查询:
UPDATE `invitations` SET `iProcessed` = 1 WHERE `iReceiver` = 'RECEIVER';
所以基本上这就是当前流程的形成方式:
我想有一个更好更快的方法,只需要1或2个查询即可。我尝试过使用INSERT IGNORE和ON DUPLICATE,但这只是给了我错误而放弃了。
我希望你明白我在寻找什么。谢谢大家的时间!
答案 0 :(得分:1)
有满足您需求的东西:
INSERT ... ON DUPLICATE KEY UPDATE语法:
如果指定ON DUPLICATE KEY UPDATE,则插入一行 会导致UNIQUE索引或PRIMARY KEY中的重复值 执行旧行的更新。例如,如果列a是 声明为UNIQUE并包含值1,以下两个 陈述具有相同的效果:
INSERT INTO表(a,b,c)VALUES(1,2,3)在DUPLICATE KEY UPDATE C = C + 1;
INSERT IGNORE:
如果使用IGNORE关键字,则执行时会出现错误 INSERT语句被忽略。例如,没有IGNORE,就是一行 复制表中的现有UNIQUE索引或PRIMARY KEY值 导致重复键错误,语句被中止。同 IGNORE,行仍未插入,但没有发生错误。