问题描述
我正在尝试使用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即可。