我有一個代碼,它會生成一個代碼爲mt_rand(100000,999999);
的6位隨機數字,並將其存儲在變量$student_id
中。我用下面的代碼檢查數據庫中是否存在這個數字。如何檢查數據庫中是否存在ID,否則將其插入數據庫?
if($stmt = mysqli_prepare($connect, "SELECT id FROM students WHERE id = ? LIMIT 1")) {
mysqli_stmt_bind_param($stmt, "i", $student_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
mysqli_stmt_bind_result($stmt, $db_id);
mysqli_stmt_fetch($stmt);
}
if(mysqli_stmt_num_rows($stmt) == 1) {
echo "The ID exists.";
} else {
// Insert $student_id into database
}
此代碼可以將ID插入數據庫中,如果mysqli_stmt_num_rows($stmt) == 0
。但是,如果ID已經存在,它不會生成一個新的6位隨機ID,它不會檢查該ID是否已經存在於數據庫中,等等。我可以想象,我將不得不使用某種類型的循環將繼續生成一個隨機ID,直到它不存在於數據庫中,然後將其插入到數據庫中。我已閱讀了幾個循環(如while
或for
),但我不知道如何使用它們。
任何人都可以幫助我解決這個問題,或幫助我走向正確的方向嗎?
乾杯
你爲什麼不只是使用一個自動增加的id字段?爲什麼學生ID必須是「隨機的」?另外,你正在使用哪個數據庫? – Bohemian
因爲我想要ID有6位數字,我認爲自動遞增從1開始。基本上沒有其他原因,我只是想讓ID是隨機的(雖然這有點傻)。我使用MySQL作爲我的數據庫。 – Steef
沒問題。看到我的新答案:) – Bohemian