0

我有以下代码应该生成两个随机数,如果之前已经生成过它们,则永远不要重复它们。$ticket_number1 和 $ticket_number2 分别保存在 'ticket1' 和 '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();
4

1 回答 1

0

我只是在黑暗中拍摄,但如果号码在同一个呼叫中,即 $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);
于 2013-07-30T16:55:25.187 回答