【问题标题】:How to compare two fields in two tables in PHP?如何在 PHP 中比较两个表中的两个字段?
【发布时间】:2014-05-21 01:14:23
【问题描述】:

表_1

ID | Username
 1   John
 2   Mike
 3   Chase
 4   Shane

表_2

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

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

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

【问题讨论】:

  • 你有没有尝试写一些东西?你能告诉我们吗?
  • 向我们展示您的尝试

标签: php mysql database compare


【解决方案1】:

您必须使用 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
               }

         }
    }

【讨论】:

  • 不推荐使用旧的 mysql 函数。建议使用新的 PDO 库。
  • 这行得通,但是 mysql 已被弃用,所以我改用 mysqli,谢谢你的回答,除了将 mysql 更改为 mysqli 之外,它就像一个梦一样工作。再次感谢,祝您有美好的一天。
  • Cully 感谢您的建议。用户很高兴为您提供帮助:)
【解决方案2】:

我的 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;

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

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多