首先抱歉我犯的任何错误:)
其次,我有一个php数组的问题: 我有一个表(用户),其中有0.5万用户。我必须选择那里的每个用户电子邮件(它们都是唯一的电子邮件)。
我有一个包含50k用户的文件(import.txt)。他们都有独特的电子邮件。
我有第二个表(折扣),其中users.id与我的company_id一起放置(每个users.id与company_id配对,因此无法重复)。
问题:
有没有人有任何想法如何让这个脚本快速运行?我有一个运行多个循环的想法,但也许有更好的解决方案呢?
提前感谢您的帮助! 如果有什么不清楚 - 请评论,我会解决它
更好的可视化方案:Scheme link
答案 0 :(得分:0)
//this will generate an array of all emails in import.txt, assuming they are 1 per line
$emails = file('import.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
//this will create a string of the $emails array to use for an IN() SQL query
$emails_string = "'". implode("', '", $emails) ."'";
//this will give you all emails in imports.txt that are registered
$exists = $pdo->query("SELECT email FROM users WHERE email IN($emails_string)");
//this will give you all emails in imports.txt that are NOT registered
$not_exists = $pdo->query("SELECT email FROM users WHERE email NOT IN($emails_string)");
这应该是一个好的开始。你可能不得不最后使用#3和#4的foreach()循环。