Выберите количество разрывов в цикле do-while

Там, где я работаю, нам нужно зарегистрировать компьютеры в базе данных, прежде чем мы просто использовали ручку, но меня попросили создать более простой метод. Поэтому я сделал небольшую домашнюю страницу.

Компьютеры зарегистрированы по метке и номеру. Тег в сочетании с номером должен быть уникальным, я сделал этот цикл, который увеличивает введенный номер до тех пор, пока не найдет свободный.

                $checkUnique = openConnection("stationer")->prepare("SELECT COUNT(1) FROM `dator` WHERE `tag_id`=:id AND `tag_number`=:number");

do{
$checkUnique -> bindParam(":number", $_POST['number']);
$checkUnique -> bindParam(":id", $_POST['tag']);
$checkUnique -> execute();
$checkUniqueResult = $checkUnique->fetchColumn();

if($checkUniqueResult != 0 && empty($searchTagNumber)){
$errors[] = "Non-unique tag and number"; break;
}

$_POST['number'] = $searchTagNumber == "+" ? $_POST['number']+1 : $_POST['number']-1;

if($_POST['number'] <= 0){
$errors[] = "The tag number can't be 0 or lower"; break;
}
}while($checkUniqueResult > 0);

Но по какой-то странной причине он случайно останавливается, даже если тег и номер не уникальны, без сообщений об ошибках, и я понятия не имею, что их вызывает.

0

Решение

Вы можете использовать уникальный ключ как это:

UNIQUE KEY `computer_key` (`tag`,`number`)

Или поменяй движок MyISAM: MySQL двухстрочный первичный ключ с автоинкрементом

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]