如何比较PHP中两个表中的两个字段?

时间:2014-05-21 01:14:23

标签: php mysql database compare

TABLE_1

ID | Username
 1   John
 2   Mike
 3   Chase
 4   Shane

TABLE_2

 ID | Username
 1  | John
 2  | Kenny
 3  | Chase
 4  | Shane

我想从 Table_1 获取 ID 。然后在 table_2 中找到 ID 。然后我需要它来查看两个表中的字段用户名。如果他们匹配什么都不做,如果他们不匹配,那么将其更新为 Table_2 中的用户名并运行一些代码(如给我发电子邮件)

每次运行脚本时,我都需要检查Table_1中的每一行。

2 个答案:

答案 0 :(得分:0)

你必须使用INNER JOIN以便在两个表中找到匹配的ID,如果你有一个然后更新。

$sql = mysql_query("SELECT table_1.id as id_one,table_1.name as name_one,table_2.name as name_two FROM table_1 INNER JOIN table_2 ON (table_1.id = table_2.id)") or die(mysql_error());

    if(mysql_num_rows($sql) > 0)
    {
         while($fetch = mysql_fetch_assoc($sql))
         {
               if($fetch['name_one'] != $fetch['name_two'])
               {
                     // UPDATE table_1 'name' FIELD

                       mysql_query("UPDATE table_1 SET name = '".$fetch['name_two']."' WHERE id = ".$fetch['id_one']) or die(mysql_error());

                          // DO WHATEVER YOU WANT
               }

         }
    }

答案 1 :(得分:0)

我的MySQL有点生疏,但可以使用单个Update语句完成。以下内容应仅更新Table_1中与Table_2不同的用户名。您可能需要稍微调整一下语法......

update Table_1 t1
join  Table_2 t2
   on  t2.id = t1.id
  and  t2.Username <> t1.Username
set   t1.Username = t2.Username;

您可以事先查询以生成所需的任何电子邮件。