我正在尝试将邀请系统与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,但这只是给了我错误,我放弃了
我希望你明白我在找什么。感谢大家抽出时间!
有适合您需求的东西:
插入。。。ON重复密钥更新语法:
如果指定ON DUPLICATE KEY UPDATE,并且插入一行会导致UNIQUE索引或PRIMARY KEY中的值重复执行旧行的UPDATE。例如,如果列a为声明为UNIQUE并包含值1,以下两个声明具有相同的效果:
INSERT INTO表(a,b,c)VALUES(1,2,3)ON DUPLICATE KEY UPDATEc=c+1;
插入忽略:
如果使用IGNORE关键字,则在执行INSERT语句被忽略。例如,如果没有IGNORE重复表中现有的UNIQUE索引或PRIMARY KEY值导致重复键错误,该语句被中止。具有忽略,行仍然没有插入,但没有发生错误。