在我工作的地方,我們需要將計算機註冊到數據庫中,然後才使用紙筆,但我被要求創建一個更簡單的方法。所以我做了一個小型的本地主頁。在執行循環中選擇計數中斷
電腦通過標籤和編號進行註冊。與數字相結合的標籤必須是唯一的,我使這個循環增加了輸入的數字直到找到一個自由的數字。
$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);
但對於一些奇怪的原因,它似乎隨機停止,即使標籤和編號不唯一的,沒有錯誤信息,我不知道是什麼原因造成的。
添加在開始使用error_reporting(E_ALL),看看是否真的有錯誤 – Phate01 2015-02-05 14:35:31
,通常主鍵可以自動增量:你添加一個新的行和數據庫自動遞增主鍵 – Phate01 2015-02-05 14:36:35
@ Phate01但是,這將阻止計算機具有相同的數字,但不同的標籤,我已經有一個ID字段。即使使用'error_reporting(E_ALL)'也沒有錯誤' – Yemto 2015-02-05 14:40:10