在MySQL+中的行之间划分数字;PHP

在MySQL+中的行之间划分数字;PHP,php,mysql,arrays,Php,Mysql,Arrays,您好,我正在研究一种抽奖系统,它将100万个随机数分成x张彩票,例如100万个随机数到10000张彩票 每个票证都是数据库中的一行,然后我们有另一个表票证编号,我需要为每个票证提供100个编号,它们由票证id关联 所以现在这是我的代码: //Amount of the 1 million tickets divided to the tickets $numbersPerTickets = $_POST['numbersPerTicket']; //The total cost of the

您好,我正在研究一种抽奖系统,它将100万个随机数分成x张彩票,例如100万个随机数到10000张彩票

每个票证都是数据库中的一行,然后我们有另一个表票证编号,我需要为每个票证提供100个编号,它们由票证id关联

所以现在这是我的代码:

//Amount of the 1 million tickets divided to the tickets
$numbersPerTickets = $_POST['numbersPerTicket'];

//The total cost of the property
$propertyPrice = $_POST['propertyPrice'];

//The total amount of tickets
$totalTickets = NUMBER_CIELING / $numbersPerTickets;

//The ticket price
$ticketPrice = $propertyPrice / $totalTickets;

//Generate array with random numbers up to 999,999
$randomTicketNumbers = createTicketNumbers();

//Creation loop counter
$ticketCreationCount = 1;

//Loop and create each ticket
while($ticketCreationCount <= $totalTickets)
{

    //Create a padded ticket number
    $ticketNumber = str_pad($ticketCreationCount, 6, 0, STR_PAD_LEFT);

    $query = '
        INSERT INTO tickets(
            propertyID,
            ticketNumber,
            price
        )
        VALUES(
            "'.$propertyID.'",
            "'.$ticketNumber.'",
            "'.$ticketPrice.'"
        )
    ';

    $db->query($query);

    //Get the ID of the inserted ticket to use to insert the ticket numbers
    $ticketID = $db->insert_id;

    $loopBreak = $numbersPerTickets;
    $addedNumberCount = 1;

    foreach($randomTicketNumbers as $key => $value)
    {

        $query = '
            INSERT INTO ticketNumbers(
                ticketID,
                number
            )
            VALUES(
                "'.$ticketID.'",
                "'.$value.'"
            )
        ';

        $db->query($query);

        unset($randomTicketNumbers[$key]);

        if($addedNumberCount == $loopBreak){ 
            break;
        }else{ 
            $addedNumberCount++;
        }

    }

    $ticketCreationCount++;

}
//分为100万张票的金额
$numbersPerTickets=$_POST['numbersPerTicket'];
//物业的总成本
$propertyPrice=$_POST['propertyPrice'];
//总票数
$totalTickets=NUMBER\u CIELING/$numbersPerTickets;
//票价
$ticketPrice=$propertyPrice/$totalTickets;
//生成随机数最大为999999的数组
$randomTicketNumber=createTicketNumber();
//创建循环计数器
$ticketCreationCount=1;
//循环并创建每个票据
while($ticketcreationcountquery($query);
//获取用于插入票号的插入票证的ID
$ticketID=$db->insert_id;
$loopBreak=$numbersPerTickets;
$addedNumberCount=1;
foreach($randomTicketNumber作为$key=>$value)
{
$query='1
插入票号(
TICKTID,
数
)
价值观(
“.$ticketID.”,
““.$value.””
)
';
$db->query($query);
未设置($randomTicketNumber[$key]);
如果($addedNumberCount==$loopBreak){
打破
}否则{
$addedNumberCount++;
}
}
$ticketCreationCount++;
}

但这不起作用,因为它添加了正确数量的票证,在测试的情况下,票证数量是10000,但随后添加的票证数量太多,最终超过了随机票证数组中的一百万个数字,随机票证数组只是一个简单的一层数组,其中一百万个数字是随机排序的。

将foreach循环更改为for:

for ($i = 1; $i <= $numbersPerTickets; $i++) {
    $query = ' 
        INSERT INTO ticketNumbers( 
            ticketID, 
            number 
        ) 
        VALUES( 
            "'.$ticketID.'", 
            "'.$randomTicketNumbers[$i].'" 
        ) 
    '; 

用于($i=1;$i我不是php高手,但是你能用
for
而不是
while
将循环限制在10000吗?@ChrisGessler嗨,克里斯,第一个循环运行良好,票证数量有限,这是第二个将数字添加到票证的循环,这会产生意想不到的结果,我看不出来为什么要添加太多的车票…我想我不明白,你说的车票数量正确,然后说的车票数量太多…无论如何,我会去掉while循环和foreach循环,并替换为for循环。对不起!我一直忘了,车票数量是正确的,错误的是车票中添加的数字,已经修改了问题,准备试一试,需要清空我插入的测试,数百万行:S