在MySQL+中的行之间划分数字;PHP
您好,我正在研究一种抽奖系统,它将100万个随机数分成x张彩票,例如100万个随机数到10000张彩票 每个票证都是数据库中的一行,然后我们有另一个表票证编号,我需要为每个票证提供100个编号,它们由票证id关联 所以现在这是我的代码:在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
//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