正文
数据库同类数据随机php 数据库怎么生成随机id
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
请问php+mysql中如何从数据表student中随机抽取若干条(例如是五条数据)数据?
直接用select * from student order by rand() limit 5不是一个很好的习惯,这个要考虑到数据库的大小问题,比如,数据量为10W以上,这样查询的效率是非常低的,资源也消耗挺多!你可以考虑在php与mysql结合来实现,比如:先用mysql 的count()计算出student的总条数$sum_num,赋值到php中的变量中,后在php中更具这个总条数进行生成随机数(这里涉及到你的5条数据是否为连续的5条随机数,还是打乱的随机五条),这里如果生成连续的数据就只需要生成一个小于$sum_num-5的随机数就可以了!根据这个随机数进行limit取出5条就可以;如果这里需要生成打乱的随机数,就需要生成5个不相同的并且小于$sum_num随机数,最后根据这些随机数在数据库中查询,第一种情况用到limit 随机数,5;;第二种情况用到in(随机数1,随机数2,随机数3,随机数4,随机数5);在数据量大的情况下,这样的效率和资源消耗的情况下都要比select * from student order by rand() limit 5好得多,当然如果数据量不多的话就用这个也可以!只是给你普及个知识!祝你学习愉快!(这里暂且认为你会用php生成随机数并且这里的php生成的随机数必须为大于0的整型哦,不会的话可以先百度、google,最后可以继续给我留言)!
这里因为你的id会有缺失所以有的方法不适用!就不一一列举了!
查询数据库时 用php 输出随机数值
range();创建一个包含指定范围的元素的数组
array_rand();从数组中随机取值
implode()数组转换成字符串
rand()生成随机数
看不懂你说的,0.0;上面那几个函数应该够你用了
php从数据库取值后做成一个数组类型的随机数
从你的表述数据库同类数据随机php,我的分析是:你的数据库有30条左右的数据行,每次全部都查出来(需要一个二维数组,这样便于管理),每一行数据有3个字段,你需要的结果是,当页面刷新的时候,每次随即显示7条数据。代码如下:
?php
// 连接数据库
$link = mysql_connect('主机名', '用户名', '密码');
// SQL查询语句,条件WHERE如果没有可以不加,不需要LIMIT,全部查出来
$sql = "SELECT `字段1`, `字段2`, `字段3` FROM `表名` WHERE `条件`;";
// 执行SQL语句,获取查询结果集
$result = mysql_query($sql, $link);
// 循环遍历结果集 用意是为数据库同类数据随机php了构建二维数组,不懂不要紧用了就明白,双!!号是为了将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 /';
}
// 问题解决,这只是一种解决方案,当然还有其数据库同类数据随机php他很多种,最后记得关闭数据库和销毁结果集
mysql_free_result($reuslt); // 销毁结果集
mysql_close($link)// 关闭数据库
// 销毁变量
unset($result);
unset($link);
?
希望我的方案,能够帮你解决问题,如果还有任何问题或疑惑欢迎追问~
php语句,怎么从数据库中随机获取数据字段。
//连接数据库
if(!$con = mysql_connect("localhost","root","root")){die(mysql_error());}
mysql_select_db("ali_xt");
mysql_query('set names utf8');
//找出ali_admin表的字段
$res = mysql_query('show columns from ali_admin');
//将数据给弄出来
$data = array();
while ($row = mysql_fetch_assoc($res, MYSQL_NUM)) {
$data[] = $row;
}
//随机个数,默认5
$rand_times = 5;
$rand_times = count($data)$rand_times?count($data):$rand_times;
$result = array();
for( $i=0;$i$rand_times;$i++ ){
$result[] = $data[rand(0,count($data)-1)][0];
}
echo "pre";
print_r($result); //输出5个随机字段
mysql_close($con);
//纯手写的,不明白可以问我,记得给分
php,选择“数据库表里”符合某个条件的多个数据,然后怎么再随机选取一个?
$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条记录?PHP
/**
* MySQL 随机取记录
*
* @param $t 表
* @param $c ID列,默认为id
* @param $n 取多少个
* @param $w 条件语句
* @param $f bool 是否强制以多维数组形式返回,默认false
* @return array 取1个直接返回结果数组(除非$f为true),取1个返回多维数组,用foreach取出
*/
function rand_row($t , $c = 'id' , $n = '1', $w = '' , $f = false) {
$m=new mysqli(mysqli信息,自行查找php文档);
if (!empty($w)) {
$w = ' AND '.$w;
}
$sql = "SELECT * FROM `{$t}` WHERE {$c} = (SELECT floor(RAND() * (SELECT MAX({$c}) FROM `{$t}`))) {$w} ORDER BY {$c} LIMIT {$n};";
$xq = $m-query($sql);
$r = array();
while ($x = $m-fetch_array($xq)) {
$r[] = $x;
}
if ($f == false count($r) == 1) {
return $r[0];
} else {
return $r;
}
}
关于数据库同类数据随机php和数据库怎么生成随机id的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。