我这里有点情况。如果在我的“会话”表中的数据库中,如果我有以下数据:
SessionId
C
然后我的代码发生的情况是,当用户生成一个新字符串时它不会显示上面的字符串,因为它已经在数据库中。例如上面的这个工作正常。
我遇到的问题是,如果我有多个会话(考试),那么在下面的数据库中,它将在数据库中显示如下字符串:
SessionId
C1
C2
C3
以上是3次考试。但问题是字符串“C”仍然可以在下面的代码中生成。我的问题是,如果字符串末尾有一个数字,如上表,那么我怎么能不生成仍在数据库中的字符串?字符串总是 1 个字符长:
function id_generator(){
$id = "";
$a = array( "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" );
for( $i = 0 ; $i < 1 ; $i++ ){ $r = rand( 0 , 25 );
$id .= $a[ $r ];
}
return $id;
};
$is_there = true;
while( $is_there ){
$id = id_generator(); // your function to generate id;
$result = "SELECT SessionId FROM Session WHERE SessionId LIKE ?";
$stmt=$mysqli->prepare($result);
$id = $id . '%';
$stmt->bind_param("s",$id);
$stmt->execute();
// get result and assign variables (prefix with db)
$stmt->bind_result($dbSessionId);
$stmt->store_result();
$stmtnum = $stmt->num_rows();
if($stmtnum == 0) {
$is_there = false;
}
}
....
</body>
<form>
<p><strong>1: Your Assessment ID: </strong><span id="idFont"><?php echo $id; ?></span></p>
....