PHP uniqid在while循环的每个迭代上重复

问题描述

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

这是我的代码

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

  
$dblink = new MysqLi($host,$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列被调用的任何地方。

注意:除非真正需要所有这些列,否则应避免使用SELECT *。在这里,您不需要ID,只需选择ID即可。