Я хочу использовать цикл for, чтобы избежать дублирования идентификаторов, но я не могу выйти из цикла - PullRequest
0 голосов
/ 02 апреля 2019

Я написал следующий код, чтобы избежать дублирования идентификатора, но не могу выйти из цикла 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 голосов
/ 02 апреля 2019

Вы всегда получите размер строки как 1, потому что даже если дубликатов нет, в столбце будет показано значение 0.

Вам нужно получить фактическое значение из столбца, а затем вам нужно будет сделать сравнение. Более того, вы присваиваете 0, а не сравниваете его с нулем.

0 голосов
/ 02 апреля 2019

Ваш код

if ($someid = 0)

Должно быть

if ($someid == 0)

Если проверка условия равна, нужно два знака равенства вместо одного

0 голосов
/ 02 апреля 2019

Проблема в условии 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;
            } 
        }
?>
0 голосов
/ 02 апреля 2019

В случае, если вы присваиваете от 0 до $someid. Присвоение возвращает значение, которое является присваиванием (в данном случае 0, которое оценивается как ложное).

Вместо этого используйте == для сравнения двух значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...