PHP uniqid 在 while 循环的每次迭代中重复

PHP uniqid repeating on every iteration of while loop

我正在尝试使用 while 循环使用唯一标识符填充 mysql 数据库中的列,但 uniqid 一遍又一遍地重复相同的输出。

这是我的代码:

$dblink = mysqli_connect($host,$dbu,$dbp);
$dblink->set_charset("utf8");
$seldb = mysqli_select_db($dblink, $db);

  
$dblink = new mysqli($host, $dbu, $dbp, $db);

    $result = $dblink->query(" SELECT * FROM `mytable` ");


    while ($row = $result->fetch_assoc())  {
        $uniquecode = uniqid();
        $sql = mysqli_query($dblink,"UPDATE `mytable` SET `code`='$uniquecode' ");
    }

我做错了什么?

您在每次迭代中更新 条记录,因为您的UPDATE 缺少WHERE 子句。

通常你会这样输入:

UPDATE ... SET code=? WHERE id=?

将其锁定到仅匹配 id 的行或您的 ID 列的任何名称。

Note: You should avoid SELECT * unless you actually need all those columns. Here you don't, you just need ID, so just select that.