0

105-##### の形式で乱数を生成する必要があり、データベースに保存する前に、この生成された数値を既に作成されている数値と照合して、存在しないことを確認する必要があります。

数値自体を生成するコードは次のとおりです。

$digits = 5;
$second_num = str_pad(rand(0, pow(10, $digits)-1), $digits, '0', STR_PAD_LEFT);
$order_gen = "105-".$second_num;

この $order_gen 番号を取得したので、order_number データベース テーブルに既にあるものをループして、重複がないことを確認する最善の方法は何ですか? while ループを使用することを考えていましたが、適用方法がわかりません。

4

3 に答える 3

-1

これは仕事をすることができます

$rand = mt_rand(000123,999999); //prefix between 000123 to 999999
$id = "105".$rand;

$error = true;
while($error){
 $query = "SELECT id FROM table WHERE id = '$id'";
 $result = mysqli_query($conn,$query);
 $count = mysqli_num_rows($result);
  if($count!=0){
   $error = true;
   $rand = mt_rand(000123,999999);
   $id = "105".$rand;    
  }else{
   $error = false;
  }
}
于 2017-08-02T17:10:07.443 に答える