繁体   English   中英

MYSQL中的PHP数组选择

[英]PHP Array in MYSQL select

需要您的PHP / MYSQL数组帮助。

我有一个PHP脚本,从这样的字符串中选择用户: email@email.com, email@email2.com, email@email3.com

我有一个MYSQL数据库,其中一些注册用户出现在他们的电子邮件地址中。 该脚本需要检查电子邮件地址是否存在于以下行中:

 $splitdata = for example: email@email.com, email@email2.com, email@email3.com

 $sql= mysql_query("SELECT * FROM `users` WHERE `email` IN ('".join("','", $splitdata)."')")     or die ('Error: '.mysql_error ());
Then i get the result with a MYSQL fetch array:

while($result = mysql_fetch_array($sql)) {      
    $email = $result['email'];
...

对于结果,我在另一个表中插入一个值。 但仅适用于可在de行中找到的电子邮件地址。

我需要的:

我想向表格中未找到的用户的电子邮件地址发送电子邮件。 对于邀请软件。 它现在只适用于可以找到的用户,但我需要对找不到的用户执行不同的操作。

它不必在同一个MYSQL中,我可以为数据库中找不到的所有电子邮件地址创建另一个mysql fetch。 我需要一些示例代码或知道如何执行此操作的人。

目前已尝试过NOT IN但它给了我列表中每个用户的结果,除了可以找到的用户。 结果必须是无法找到的电子邮件地址。

您可以将找到的电子邮件保存在一个数组中,并使用以下两个执行array_diff()

$splitdata = array(email@email.com, email@email2.com, email@email3.com)
$sql= mysql_query("SELECT * FROM `users` WHERE `email` IN ('".join("','", $splitdata)."')")     or die ('Error: '.mysql_error ());
while($result = mysql_fetch_array($sql)) {      
    $emailsFound[] = $result['email'];
    $email = $result['email'];
}

$emailsNotInResults = array_diff($splitdata,$emailsFound);

这将为您提供一系列电子邮件,这些邮件位于您的$splitdata但无法在数据库中找到。

在fetch调用上获取错误通常意味着您的查询失败,并且您已经返回了一个布尔值FALSE而不是语句句柄。

首先尝试检查查询失败:

$sql = mysql_query("....");
if ($sql === FALSE) {
    die(mysql_error());
}

在进行提取调用之前。

我可以为此单独查询,但我会保持简单,一次只查询一封电子邮件。

SELECT CASE WHEN EXISTS(SELECT 1 FROM users WHERE email ='$ email')THEN'yes'ELSE'no'END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM