Mysql Update,2个数据库

时间:2013-04-21 23:54:56

标签: mysql database date set

我有2个MYSQL表,当我从表A中选择仅包含1列的日期时,可以说10行包含日期

    $result = mysql_query("SELECT * FROM A");
    $row = mysql_fetch_assoc($result);

在我想要使用表A mysql_query("UPDATE B SET something='1' WHERE name='".$row['name']."'")中的这些日期更新另一个表B之后 所以我需要更新第二个表,但是它只更新了一次,第一个日期来自表A,其他9则忽略。所以我的问题是,如何使用1个表中的每个日期更新第二个表?

1 个答案:

答案 0 :(得分:0)

您需要在循环中运行更新。执行查询后

$result = mysql_query("SELECT * FROM A");

并验证它是否成功(确保$result不为null),而不是获取一行,使用循环:

while($row = mysql_fetch_assoc($result)){
    // perform calculations & assignments with the $row elements
    $result2 = mysql_query("UPDATE B SET something='1'
                            WHERE name='".$row['name']."'");
    if(! $result2){
         echo "update failed";
    }
    // Any other stuff you need to do
}

可替换地:

如果更新中的something对于所有行都相同,则可以更改第一个查询,以便为您提供以逗号分隔的名称字符串:

$result = mysql_query("SELECT CONCAT("'",GROUP_CONCAT(name SEPARATOR "','"),"'")
                       AS all_names FROM A");

这样,您只会收到一行,然后您可以在第二个查询中使用它:

$result2 = mysql_query("UPDATE B SET something='1'
                        WHERE name IN (".$row['name'].")");