我想使用for循环来避免重复的ID,但是我无法摆脱循环

时间:2019-04-02 09:04:25

标签: php for-loop

我编写了以下代码以避免重复的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;
            } 
        }
?>

仅当没有重复项时,我才能跳出循环吗?

4 个答案:

答案 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而不是将其与零进行比较。