我有一个网站与活动,我有两个重要的表,一个与所有地址的第一个通讯和一个为注册用户。
现在我想提醒所有没有注册的地址。
我的想法是比较两个表(tbl_adressestbl_registered_usr)中的电子邮件地址,并“删除”两个表中的所有电子邮件地址。
我的代码看起来像:

// Read records
$query = "SELECT email FROM wf_anlaesse WHERE anlaesseID = '$Datum'";
$query = mysql_query($query);

// Put them in array
for($i = 0; $array[$i] = mysql_fetch_assoc($query); $i++) ;

// Delete last empty one
array_pop($array);

print_r ($array);

echo "<br /><br /><br /><br />";

// Read records
$query2 = "SELECT email FROM wf_adressen";
$query2 = mysql_query($query2);

// Put them in array
for($i = 0; $array2[$i] = mysql_fetch_assoc($query2); $i++) ;

// Delete last empty one
array_pop($array2);

print_r ($array2);


echo "<br /><br /><br /><br />";
$result = array_diff($array, $array2);
print_r($result);

我的输出如下:
Array (
    [0] => Array ( [email] => E-MAIL )
    [1] => Array ( [email] => E-MAIL )
    [2] => Array ( [email] => E-MAIL )
    [3] => Array ( [email] => E-MAIL ) ... and so on


Array (
    [0] => Array ( [email] => E-MAIL )
    [1] => Array ( [email] => E-MAIL )
    [2] => Array ( [email] => E-MAIL )
    [3] => Array ( [email] => E-MAIL )`... and so on

Array ( )

array_diff不起作用。
有什么想法吗?
谢谢!
克里斯

最佳答案

在我看来,您需要左联接,它获取第一个(左)表中与条件匹配的所有值。使用IS NULL可以指定第二个(右)表中不存在的值。

SELECT A.email
FROM wf_adressen A
LEFT JOIN wf_anlaesse B
ON A.email = B.email
WHERE B.email IS NULL

这将返回wfúu adressen中没有出现在wfúu anleasse中的所有电子邮件。
下面是一个使用PostgreSQL的示例:
CREATE TABLE wf_anlaesse (id SERIAL, email TEXT);
CREATE TABLE wf_adressen (id SERIAL, email TEXT, name TEXT);

INSERT INTO wf_adressen VALUES (DEFAULT, 'nikm@nikm.nikm', 'Nik M');
INSERT INTO wf_adressen VALUES (DEFAULT, 'nigelj@nigelj.com', 'Nigel J');

INSERT INTO wf_anlaesse VALUES (DEFAULT, 'nikm@nikm.nikm'); -- only Nik's received it

SELECT A.email
FROM wf_adressen A
LEFT JOIN wf_anlaesse B
ON A.email = B.email
WHERE B.email IS NULL;

       email
-------------------
 nigelj@nigelj.com

虽然MySQL在创建表和插入值方面可能不同,也可能不同,但我确信连接语法完全相同。

关于php - PHP-比较数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21383791/

10-11 03:32
查看更多