MYSQL中的PHP数组选择

时间:2012-01-19 22:18:55

标签: php mysql

需要您的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但它给了我列表中每个用户的结果,除了可以找到的用户。结果必须是无法找到的电子邮件地址。

3 个答案:

答案 0 :(得分:2)

您可以将找到的电子邮件保存在一个数组中,并使用以下两者执行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但无法在数据库中找到。

答案 1 :(得分:0)

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

首先尝试检查查询失败:

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

在进行提取调用之前。

答案 2 :(得分:0)

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

SELECT EXETS时选择案例(从用户选择1 WHERE email ='$ email')然后'是'ELSE'no'结束