在do-while循环中选择计数中断

时间:2015-02-05 14:29:36

标签: php pdo 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); 

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

1 个答案:

答案 0 :(得分:1)

您可以使用unique key这样的内容:

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

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