PHP生成两个随机数,而不会互相重复以前的数字


PHP generate two random numbers without repeating eachother neither previous numbers

我有下面的代码,应该生成两个随机数,如果它们以前已经生成过,就永远不要重复$ticket_number1和$ticket_nnumber2分别保存到"ticket1"answers"ticket2"字段中的数据库表"tickets"中。不过,出现了问题,我测试了生成的数字在1到6之间的脚本,结果是$ticket_number1和$ticket_number2都是同一个数字(在这种情况下是4),这不应该发生。之后,我再次测试,得到了两个不同的数字(1和4),但它们之前已经给出了,所以不应该再次出现。这意味着整个脚本除了生成随机数之外没有做任何事情。我已经被告知mysql_已经被弃用,但这并不是脚本不起作用的原因,对吧?有什么想法吗?感谢您提前提供的帮助。

function getTicket(){
    $count=1;
    while($count){
        $ticket_number = mt_rand(01990, 32000);
        $query = "SELECT ticket1 FROM `tickets`
        WHERE `ticket1` == '$ticket_number' or `ticket2` == '$ticket_number'";
        $count = mysql_num_rows(mysql_query($query));
    }
    return $ticket_number;
}

$ticket_number1 = getTicket();
$ticket_number2 = getTicket();

我只是在黑暗中拍摄,但如果数字在同一个调用中,即$ticket_number1和$ticket_number2在一个页面调用中相同,您可以通过告诉函数拒绝已经选择的数字来解决此问题

function getTicket($exclude=-1){
  $count=1;
  while($count){
    $ticket_number = mt_rand(01990, 32000);
    $query = "SELECT ticket1 FROM `tickets`
    WHERE `ticket1` == '$ticket_number' or `ticket2` == '$ticket_number'";
    $count = mysql_num_rows(mysql_query($query));
    if(!$count)
       $count=$ticket_number==$exclude;
  }
  return $ticket_number;
}
$ticket_number1 = getTicket();
$ticket_number2 = getTicket($ticket_number1);