十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
?php
目前成都创新互联已为近千家的企业提供了网站建设、域名、虚拟空间、网站托管运营、企业网站设计、卧龙网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
session_start();
$id_lucky = $_POST['id_lucky'];
$customer = $_POST['customer'];
$prize = $_POST['prize'];
$hide = $_POST['hidden'];
//var_dump($_SESSION);
if($hide==$_SESSION['conn'])//你这里判断的session是什么时候存入session的
{
$sql=mysql_query("insert into "._DB_PREFIX_."luckdraw (customer,prize) values ('$customer','$prize')");
//你这里没有判断 你应该在这里判断一下mysql_query是否执行成功 执行sql成功 是提交成功 否则是失败 建议你使用var_dump($sql)打印$sql看看$sql是什么数据类型
if($sql){
echo "亲,提交成功了哦";
}else{
echo '失败';
}
}else
{
echo "scriptreturn false;/script";
}
session_destroy();
无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1、4、5是我常用的,其余来自网络整理)
方法一:
复制代码
代码如下:
?php
$numbers
=
range
(1,50);
//shuffle
将数组顺序随即打乱
shuffle
($numbers);
//array_slice
取该数组中的某一段
$num=6;
$result
=
array_slice($numbers,0,$num);
print_r($result);
?
方法二:
复制代码
代码如下:
?php
$numbers
=
range
(1,20);
//播下随机数发生器种子,可有可无,测试后对结果没有影响
srand
((float)microtime()*1000000);
shuffle
($numbers);
//跳过list第一个值(保存的是索引)
while
(list(,
$number)
=
each
($numbers))
{
echo
"$number
";
}
?
方法三:
复制代码
代码如下:
?php
function
NoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//调用现成的数组随机排列函数
return
array_slice($rand_array,0,$limit);//截取前$limit个
}
print_r(NoRand());
?
上述可以在1-20间随机产生5个不重复的值
方法四:
复制代码
代码如下:
?php
$tmp=array();
while(count($tmp)5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print_r($tmp);
?
方法五:
复制代码
代码如下:
?php
$tmp
=
range(1,30);
print_r(array_rand($tmp,10));
?
这个可能是比叫简单的了(ps:如果在range中指定了步长,就必须注意array_rand的第二个参数是否超出$tmp的长度)。
PHP提供非常丰富的数组函数,产生随机数大多可以从数组这个角度出发,若你还有方法提供,欢迎给出,文章将持续更新。
// 1、首先定义一个空的目标数组
$arr = [];
// 2、开始for循环
for ($i = 0; $i 1000; ) {
****// 3、获取0~3000之间的随机数
****$r = rand(0, 3000);
****// 4、判断该随机数是否存在目标数组中
****if (!in_array($r, $arr)) {
********// 5、如果不存在,则将该随机数添加到目标数组中
********$arr[] = $r;
********// 6、最关键的一步:只有向目标数组添加新值的时候才改变$i的值
********$i ++;
****}
****continue;
}
// 7、最后打印出目标数组,也可使用print_r函数
var_dump($arr);
die;
总结:该题的难点在于在什么时候再改变计数器变量$i的值,只有数组元素新增的时候才能改变$i,使其加1,当然for循环体也可反向写,也可采用别的循环结构,留给你自己发挥^^。
希望能帮助到你,望采纳,谢谢~
你好,这是我解决你这个问题的思路,希望能帮到你:比如你是根据a字段设置唯一,在每次插入之前就使用下一条需要插入的值去数据表里面查询,如果查询到了就跳出当前循环,下次循环继续(continue),希望能帮到你!
数据库中设置为不可重复
while循环
生成随机号和密码部分应该不用讲了 你应该有自己的规则
然后往数据库中插入
插入的时候try一下 如果没成功继续向下执行
如果执行成功了则计数加1
当计数等于N的时候跳出循环
你可以这样,你有一张ip_code表格,你加一个字段为state,你每次取的时候把state标为1,而没取得为0,那么每次拿都是去拿为0的。