나는 코드 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를 데이터베이스에 삽입 할 수 있습니다. 그러나 ID가 이미 존재하면 새 6 자리 임의의 ID가 생성되지 않으며 해당 ID가 이미 데이터베이스에 존재하는지 확인하지 않습니다. 어떤 종류의 루프를 사용해야한다고 생각할 수 있습니다. 데이터베이스에 존재하지 않을 때까지 임의의 ID를 생성 한 다음 데이터베이스에 삽입합니다. 몇 루프 (예 : while
또는 for
)에 대해 읽었지만 사용 방법을 모릅니다.
누구든지 나를 도와 주거나 올바른 방향으로 나를 도울 수 있습니까? 그래서 당신이 경우 확인할 수 있습니다
SELECT id FROM students WHERE id = ? limit 1
이
SELECT count(id) FROM students WHERE id = ?
을 becames : 당신이 자동 증가 필드를 사용하지 않으려면
건배
왜 그냥 자동 증가 id 필드를 사용하지 않는? 학생 ID는 왜 "임의"이어야합니까? 또한, 어떤 데이터베이스를 사용하고 있습니까? – Bohemian
ID에 6 자리가 있어야하고 자동 증가가 1부터 시작한다고 생각했기 때문에 기본적으로 ID가 임의적이어야한다는 것 외에는 다른 이유가 없습니다 (바보 같지만). 내 데이터베이스로 MySQL을 사용합니다. – Steef
문제 없습니다. 내 새로운 대답을보십시오 :) – Bohemian