Php 如何从数组更新表? $query=“从tabl ORDER BY RAND()中选择用户”; $result=mysql\u查询($query) 或死亡(“查询“$Query”失败,错误消息:\”“.mysql\u error()。”); while($row=mysql\u fetch\u数组($result)){ $users[]=$row[0]; } $current=最终用户($users); $partners=array(); foreach($users作为$user) { $partners[$user]=$current; $current=$user; } 印刷(合伙人); $query2=“UPDATE tabl SET partner={$partners[0]}其中users='$users'; mysql\u查询($query2) 或死亡(“查询“$query2”失败,错误消息:\”“.mysql\u error()”;

Php 如何从数组更新表? $query=“从tabl ORDER BY RAND()中选择用户”; $result=mysql\u查询($query) 或死亡(“查询“$Query”失败,错误消息:\”“.mysql\u error()。”); while($row=mysql\u fetch\u数组($result)){ $users[]=$row[0]; } $current=最终用户($users); $partners=array(); foreach($users作为$user) { $partners[$user]=$current; $current=$user; } 印刷(合伙人); $query2=“UPDATE tabl SET partner={$partners[0]}其中users='$users'; mysql\u查询($query2) 或死亡(“查询“$query2”失败,错误消息:\”“.mysql\u error()”;,php,mysql,arrays,Php,Mysql,Arrays,这就是我正在使用的代码。一切都很好,直到2号。我已经尝试了我能想到的每一种变化,但没有任何效果 上的表有两个字段:用户和合作伙伴。代码以随机顺序拉取用户,然后将他们分配到一个圆圈中。我需要用分配填充partners字段。将更新查询放在foreach循环中,然后您就有了partner和user变量,而无需稍后跳入数组: $query = "SELECT users FROM tabl ORDER BY RAND()"; $result = mysql_query ($query) or d

这就是我正在使用的代码。一切都很好,直到2号。我已经尝试了我能想到的每一种变化,但没有任何效果


上的表有两个字段:用户和合作伙伴。代码以随机顺序拉取用户,然后将他们分配到一个圆圈中。我需要用分配填充partners字段。

将更新查询放在foreach循环中,然后您就有了partner和user变量,而无需稍后跳入数组:

$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 () . '"');
foreach($users作为$user)
{
$partners[$user]=$current;
$current=$user;
$query2=“UPDATE tabl SET partner='{$partners[$user]}'其中users='{$user}';
mysql\u查询($query2)
或死亡(“
查询“$query2”失败,错误消息:\”。mysql\u错误() }
使用
在('.intlode(',',$users.')中的WHERE用户。
我会将代码更改为:

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 ()
}
$current=终端($users);
$partners=array();
foreach($users作为$user)
{
$partners[$user]=$current;
$current=$user;
$query2=“UPDATE tabl SET partner={$partners[$user]}其中users='$user';
mysql\u查询($query2)
或死亡(“
查询“$query2”失败,错误消息:\”“.mysql\u error()”; } 印刷(合伙人);
但您也可以根据您想要的结果执行以下操作:

$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=“更新tabl SET partner={$partners[0]}其中用户位于($userList)”;
mysql\u查询($query2)
或死亡(“
查询“$query2”失败,错误消息:\”“.mysql\u error()”;
这是一个很好的解决方案,但取决于$user的数量,这可能会导致对数据库进行多次查询。没错,但如果他试图为每个用户分配不同的合作伙伴,那么您将无法避免多次查询……这是一个快速而简单的解决方案,尽管我怀疑OP中的整个部分可能会被折叠omewhat.This解决了这个问题;除了您有一个小错误之外,它应该是:WHERE users='$user''No{braces}。谢谢!不客气-大括号不会造成问题,它们有时有助于可读性-您在查询之前使用过它们。此外,我从代码中不确定用户列类型是否为user。您的顶部解决方案与Jon的相同,但后来才出现。底部的解决方案不起作用,但没关系。当您速度较慢时,会发生这种情况。:)
$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 () . '"');