如果在同一个表的其他版本中不存在ID,则将行添加到表中

时间:2014-01-31 00:35:23

标签: php sql

我在谷歌搜索了解决方案,但我找不到(或者我不明白)正确的解决方案。 我有两个表,它们是相同的,但在最新版本中,有些行已经松动了。 所以我希望能够比较这两个表并通过比较ID来注入错过的行。例如: 如果在表v1中我们有ID为12的行而不在v2的表中,那么我们在v2表中添加该行。

我写了一个PHP脚本,但我不能再进一步,我不明白我怎么能同时比较这些值,也许我使用的是一种糟糕的方法,这里是我的PHP代码:

<?php
    function_db_connect();
    $req_src = "SELECT * FROM `table_v1` ";

    $req_ex_src=mysql_query($req_src) or die("Erreur: ".mysql_error());

    $i =0;

    while($row = mysql_fetch_array($req_ex_src)) {
        $i = $i +1;
        $rowID[$i] = $row['ID'];
    }

    mysqli_close();

    $n = count($rowID);

    for ($j=0;$j<=$n;$j++){
       ??????????????????????
    }

我得到了数组中的所有ID,我的想法是将这些值与for循环中的v2表进行比较。

这就是我所做的一切,我有点困惑......你认为还有另一种方法比这更好吗?

1 个答案:

答案 0 :(得分:1)

您可以使用简单的mysql查询来执行此操作,除非需要考虑其他因素,否则不需要使用php

要执行此操作,请使用insert ignore:

INSERT IGNORE INTO table_v2 (SELECT * FROM table_v1)

这将选择table_v1中的所有行,并尝试将它们插入table_v2,如果已存在行的键,则忽略该行并继续查询。