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.
我正在尝试使用 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.