Select 计数 do-while 循环中的中断

Select count breaks in do-while loop

在我工作的地方,我们需要将计算机注册到数据库中,之前我们只是用笔写纸,但我被要求创建一个更简单的方法。所以做了一个本地的小主页

计算机是通过标签和编号注册的。与号码组合的标签必须是唯一的,我做了这个循环递增输入的号码,直到它找到一个免费的号码。

                $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); 

但由于某些奇怪的原因,它似乎随机停止,即使标签和编号不是唯一的,也没有错误消息,我不知道是什么原因造成的。

您可以像这样使用 unique key

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

或更改引擎 MyISAM:mysql two column primary key with auto-increment