php从数据库取值后做成一个数组类型的随机数

php从数据库取值后做成一个数组类型的随机数,第1张

从你的表述,我的分析是:你的数据库有30条左右的数据行,每次全部都查出来(需要一个二维数组,这样便于管理),每一行数据有3个字段,你需要的结果是,当页面刷新的时候,每次随即显示7条数据。代码如下:

<php

// 连接数据库

$link = mysql_connect('主机名', '用户名', '密码');

// SQL查询语句,条件WHERE如果没有可以不加,不需要LIMIT,全部查出来

$sql = "SELECT `字段1`, `字段2`, `字段3` FROM `表名` WHERE `条件`;";

// 执行SQL语句,获取查询结果集

$result = mysql_query($sql, $link);

// 循环遍历结果集 用意是为了构建二维数组,不懂不要紧用了就明白,双!!号是为了将while循环中表达式的值强制转换成布尔值,便于判断,可以不加,我习惯加上

while (!!$assoc = mysql_fetch_assoc($result)) {//以关联数组的方式解析结果集

    $data[] = $assoc; // 将解析的结果放入数组中,创建一个二维数组

}

// 初始化一个数组,下面要用到,是用来存放随即7个数组的下标的

$keys = array();

// 写一个自定义函数,需要用到递归算法

function get_key($keys, $data) {

   // 这里用到了一个随即数字函数mt_rand()而不是rand(),因为前者是后者的加强版,个人比较喜欢前者,当然用后者在这里也是完全可以的,根据自己的喜好来定

   if (!in_array($key = mt_rand(0, count($data) - 1), $keys)) {

       // 说明没有重复,接收

       return $key;

   } else { // 说明重复继续递归

       return get_key($keys, $data);

   } 

}

// 使用for循环随即读取数据中的7条数据,当然用foreach也可以,根据自己的喜好来定

for ($i = 0; $i < 7; $i ++) {// 这里比较复杂的就是需要7条不同的数据,不能相同

   // 获取不同的7条数据的下标

   $keys[] = get_key($keys, $data);

}

// 7个不同数据的下标有了,接下来就是遍历数据了,用foreach

foreach ($keys as $key) {

    echo '字段1:'  $data[$key]['字段1'];

    echo '<p />';

    echo '字段2:'  $data[$key]['字段2'];

    echo '<p />';

    echo '字段3:'  $data[$key]['字段3'];

    echo '<p />';

}

// 问题解决,这只是一种解决方案,当然还有其他很多种,最后记得关闭数据库和销毁结果集

mysql_free_result($reuslt); // 销毁结果集

mysql_close($link)// 关闭数据库

// 销毁变量

unset($result);

unset($link);

>

希望我的方案,能够帮你解决问题,如果还有任何问题或疑惑欢迎追问~

    $mysql_server_name="localhost"; //数据库服务器名称

    $mysql_username="root"; // 连接数据库用户名

    $mysql_password=""; // 连接数据库密码

    $mysql_database=""; // 数据库的名字

    

    // 连接到数据库

    $conn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);                   

    // 从表中提取信息的sql语句

    $strsql="SELECT  FROM 表名 WHERE type='交友'";

    // 执行sql查询

    $result=mysql_db_query($mysql_database, $strsql, $conn);

    // 获取查询结果

    var_dump(array_rand($result));

说下思路:

1 将生成的数字保存到mysql数据库,然后每次生成的号码不能与数据库的数字重复,请问怎么弄?

先读取数据库已存在的数字,将结果以数组格式,与rand(1,1000)的数组相比较计算差集,去除这部分数字(array_diff),再shuffle,得到新的随机数。

我觉得,你完全可以建立一个序号表,比如,1-1000,每次用时先用随机函数取(1-数据记录数)个数值,再用这个数值取得相应的记录,当取出之后,删除这个记录,这样保证记录总数一直会减少且数字也不会重复。

2 有没有什么办法生成的时候先生成一位数的,一位数生成满了以后再生出两位数的,两位数满了然后再三位数的,以此类推?

先获取一位数的记录,再从中随机抽取一个,如果数据库中没有找到一位数的,就递增一位数,直到找到为止。

3 代码的执行效率希望能越高越好!

如果想要代码执行效率,最好尽量减少与数据库的交互。

M('table')->count(); 见手册统计查询: 方法说明 Count 统计数量,参数是要统计的字段名(可选) Max 获取最大值,参数是要统计的字段名(必须) Min 获取最小值,参数是要统计的字段名(必须) Avg 获取平均值,参数是要统计的字段名(必须)

以上就是关于php从数据库取值后做成一个数组类型的随机数全部的内容,包括:php从数据库取值后做成一个数组类型的随机数、php,选择“数据库表里”符合某个条件的多个数据,然后怎么再随机选取一个、php随机生成数据库中不存在的且不重复数字,在线等!!!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10090079.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存