我编写了以下代码以避免重复的ID,但是我无法脱离for循环。
print $someid;
一直显示0。
<?php
for (; ; ) {
$sql = "SELECT COUNT * FROM user WHERE id = :id";
$id = sha1(uniqid(mt_rand(), true));
$idcheck = $connect -> prepare($sql);
$idcheck->bindParam(':id', $id, PDO::PARAM_STR);
$idcheck -> execute();
$someid = $idcheck -> rowCount();
print $someid;
if ($someid = 0) {
break;
}
}
?>
仅当没有重复项时,我才能跳出循环吗?
答案 0 :(得分:0)
如果您要为$someid.
分配0,则分配返回分配值(在这种情况下为0,其值为false)。
使用==
来比较两个值。
答案 1 :(得分:0)
您的代码
if ($someid = 0)
应该是
if ($someid == 0)
如果条件检查相等,则需要两个等号而不是一个
答案 2 :(得分:0)
问题出在if条件下,您没有将值与0进行比较,而是分配给它,这样做,
<?php
for (; ; ) {
$sql = "SELECT COUNT * FROM user WHERE id = :id";
$id = sha1(uniqid(mt_rand(), true));
$idcheck = $connect -> prepare($sql);
$idcheck->bindParam(':id', $id, PDO::PARAM_STR);
$idcheck -> execute();
$someid = $idcheck -> rowCount();
print $someid;
if ($someid == 0) {
break;
}
}
?>
答案 3 :(得分:0)
您将始终收到行大小为1的信息,因为即使没有重复,该列也将显示值0。
您需要从列中获取实际值,然后才能进行比较。而且,您要分配0而不是将其与零进行比较。