代码之家  ›  专栏  ›  技术社区  ›  David

如何从数组更新表?

  •  0
  • David  · 技术社区  · 14 年前
    $query = "SELECT users FROM tabl ORDER BY RAND()";
    $result = mysql_query ($query)
        or die ("Query '$query' failed with error message: \"" . mysql_error () . '"');
    
    while ($row = mysql_fetch_array($result)) {
        $users[] = $row[0];
    }
    
    $current = end($users);
    $partners = array();
    foreach ($users as $user)
    {
            $partners[$user] = $current;
            $current = $user;
    }
    print_r($partners);
    
    $query2 = "UPDATE tabl SET partner = {$partners[0]} WHERE users = '$users'";
    mysql_query ($query2)
        or die ("<br>Query '$query2' failed with error message: \"" . mysql_error () . '"');
    

    这就是我正在使用的代码。在查询2之前一切都很好。我试过我能想到的每一种变化,但没有任何效果。

    上的表有两个字段:用户和合作伙伴。该代码随机抽取用户,然后将其分配给一个圈中的每个人。我需要用作业填充Partners字段。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Jon    14 年前

    将更新查询放在foreach循环中,然后您就可以手动处理合作伙伴和用户变量,而不必在后面插入数组:

    foreach ($users as $user)
    {
            $partners[$user] = $current;
            $current = $user;
            $query2 = "UPDATE tabl SET partner = '{$partners[$user]}' WHERE users = '{$user}'";
            mysql_query ($query2)
              or die ("<br>Query '$query2' failed with error message: \"" . mysql_error ()
    }
    
        2
  •  0
  •   Rob    14 年前

    使用 WHERE users IN ('.implode(',',$users).')'

        3
  •  0
  •   Joseph    14 年前

    我会把代码改为:

    $current = end($users);
    $partners = array();
    foreach ($users as $user)
    {
        $partners[$user] = $current;
        $current = $user;
        $query2 = "UPDATE tabl SET partner = {$partners[$user]} WHERE users = '$user'";
        mysql_query ($query2)
            or die ("<br>Query '$query2' failed with error message: \"" . mysql_error () . '"');
    }
    print_r($partners);
    

    但是,您也可以根据您想要的结果执行以下操作:

    $userList = join(',', $users);
    $query2 = "UPDATE tabl SET partner = {$partners[0]} WHERE users IN ($userList)";
    mysql_query ($query2)
        or die ("<br>Query '$query2' failed with error message: \"" . mysql_error () . '"');