为了账号安全,请及时绑定邮箱和手机立即绑定

如何使 PHP Ticker 编号分配更健壮?

如何使 PHP Ticker 编号分配更健壮?

PHP
守候你守候我 2021-09-05 22:02:13
我正在创建一个票务系统。我希望每个条目都是指定范围之间的唯一数字。我已经创建了函数,我将包含这些函数以展示我是如何处理事物的。如果我一口气买完所有的票,这个功能一般会有3个或4个重复的号码。我已经尝试过这个,但如果一个人一次购买了所有的票,就会以一些重复的结果告终。我认为如果一次购买一些也会发生这种情况。这需要更加健壮。已取票返回一组已取数字function takenNumbers($drawID){    $connect = new mysqli("localhost", "root", "", "dream");    $stmt = $connect->prepare("SELECT * FROM transaction WHERE DrawID = ?");    $stmt->bind_param("i", $drawID);    $stmt->execute();    $result = $stmt->get_result();    $tickets = array();    while($row = $result->fetch_assoc()){        $id = $row['ID'];        $tickets[] = $row['TicketNumber'];    }    return $tickets;}未被采用的数字也以数组形式返回function freeNumbers($drawID){    $minTickets = 1;    $maxTickets = totalTickets($drawID);    $takenNumbers = takenNumbers($drawID);    $freeNumbers = array();    $allTickets = range(1, $maxTickets);    $freeNumbers = array_values(array_diff($allTickets, $takenNumbers));    return $freeNumbers;  }然后我有一个基于这些功能的随机票生成器function randomTicket($drawID){    $num = freeNumbers($drawID);    $random = array_rand($num, 1);    return $random;}付款处理后,我调用此函数与 randomTicket 一起插入数据库。for($i = 0; $i < $quantity; $i++){    echo paymentMade($paymentId, $token, $payerID, $drawID) . "<br>";}我收到重复。这不会发生在实时应用程序中。我已经尝试了很多东西,发现这是一个相当大的编程问题。任何和所有输入将不胜感激。在此先感谢各位。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信