如何在数据库中随机取出1条记录?PHP

已经找到一种方法了,分享一下mysql_result(mysql_query("selectdatafromsqlorderbyrand()limit5"),0);如果能... 已经找到一种方法了,分享一下
mysql_result(mysql_query("select data from sql order by rand() limit 5"),0);
如果能改进麻烦告知~
展开
 我来答
KenvixZ
2015-02-21
知道答主
回答量:16
采纳率:100%
帮助的人:14.3万
展开全部
/**
 * 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;
}
}
TableDI
2024-07-18 广告
Excel一键自动匹配,在线免费vlookup工具,3步完成!Excel在线免费vlookup工具,点击19步自动完成vlookup匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
匿名用户
2015-02-19
展开全部
你这种写法是正确的,也是最简单的,但唯一的问题就是只适合数据表储存的数据量比较小的情况下!
如果数据库存在大量记录,也就是几千几万几十万条的时候,这种写法就显然不合适了,会造成sql语句的大量重复运行,拖慢程序的运行。
改进方法嘛,就是使用子查询以及join子语句,效率更高!
追问
那么怎么写呢,求改进
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-02-19
展开全部
好像有个rans
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式