Php 尝试将数组插入数据库而不重复

Php 尝试将数组插入数据库而不重复,php,html,mysqli,Php,Html,Mysqli,我的英语不是最好的,所以我会尽我最大的努力道歉,如果我弄糊涂了。不管怎样,我在做一个游戏,每个人都被分配了一个角色。我的问题是每次它在数据库中插入一个重复的数组[],而不是名称,而是数字 <?php include_once('database.php'); $roles = array('cop','cop','robber','robber','gangster','gangster'); $array = array(); $sql = mysqli_query($db,"SELEC

我的英语不是最好的,所以我会尽我最大的努力道歉,如果我弄糊涂了。不管怎样,我在做一个游戏,每个人都被分配了一个角色。我的问题是每次它在数据库中插入一个重复的数组[],而不是名称,而是数字

<?php
include_once('database.php');
$roles = array('cop','cop','robber','robber','gangster','gangster');
$array = array();
$sql = mysqli_query($db,"SELECT * FROM `account`");
$i=0;
while ($row = mysqli_fetch_assoc($sql)) {
    $array[] = $row;
}

shuffle($roles);
for ($i=0; $i < count($array); $i++) {
    $realrole = $roles[$i];
    $name = $array[$i]['name'];
    echo("   ".$realrole);
    $sq = "UPDATE account SET role = '$realrole' WHERE name = '$name'";

}
mysqli_query($db,$sq);

我认为它应该能解决你的问题

<?php

include_once('database.php');
$roles = array('cop','cop','robber','robber','gangster','gangster');
$array = array();

shuffle($roles);

$sql = mysqli_query($db,"SELECT * FROM `account`");
while ($row = mysqli_fetch_assoc($sql)) {
    $array[] = $row;
}

$i=0;
for ($i=0; $i < count($array); $i++) {
    $realrole = $roles[$i];
    $name = $array[$i]['name'];
    echo("   ".$realrole);
    $sq = "UPDATE account SET role = '".$realrole."' WHERE name = '".$name."'";
    mysqli_query($db,$sq);
}

能否提供
$array
中的内容?另外,为什么要在for循环之外执行更新查询?它只会更新最后一个。你所说的“有重复性”是什么意思@rcs..我认为$array拥有users@rcs在$array中是数据库中的帐户这很奇怪,因为当您回送它时,它是正确的,但是当它进入数据库时,它仍然在数组中重复一些事情。您可以粘贴输出以及您需要它的方式。这将有助于更好地理解你的问题