在我工作的地方,我们需要先将计算机注册到数据库中,然后再使用笔纸,但我被要求创建一种更简单的方法。所以我在当地做了一个小主页。
计算机是通过标签和号码注册的。标签与数字结合必须是唯一的,我做了这个循环,增加输入的数字,直到找到一个免费的。
$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 :(得分:1)
您可以使用unique key这样的内容:
UNIQUE KEY `computer_key` (`tag`,`number`)
或更改引擎MyISAM:mysql two column primary key with auto-increment