Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库中的简单随机查询_Php_Mysql_Random - Fatal编程技术网

Php 数据库中的简单随机查询

Php 数据库中的简单随机查询,php,mysql,random,Php,Mysql,Random,我目前有一个广告列表网站上有3个订购过滤器。默认情况下,广告按以下行排序: $this->setState('filter_order', $app->getUserStateFromRequest('com_adsman.filter_order','filter_order', "start_date")); 当我将开始日期更改为另一个列名时,默认情况下它会按该列排序,因此我知道这就是需要进行更改的地方。现在,我如何根据上面的代码显示随机结果 谢谢 编辑:这里是调用实际

我目前有一个广告列表网站上有3个订购过滤器。默认情况下,广告按以下行排序:

    $this->setState('filter_order', $app->getUserStateFromRequest('com_adsman.filter_order','filter_order', "start_date"));
当我将开始日期更改为另一个列名时,默认情况下它会按该列排序,因此我知道这就是需要进行更改的地方。现在,我如何根据上面的代码显示随机结果

谢谢

编辑:这里是调用实际查询的地方

            $Orderings[]    = "`a`.$filter_order $filter_order_Dir";
    $Orderings[]    = "`a`.`id` $filter_order_Dir ";        

$query = " SELECT ".implode(",",$SelectCols)." \r\n ".

     " FROM `#__ads` AS `a` \r\n".

     implode(" \r\n ",$JoinList)."\r\n".

     $where."\r\n".

     " GROUP BY `a`.`id` ".

     " ORDER BY ".implode(",",$Orderings)." \r\n "; 
我在考虑用类似的东西

$rand=rand(.introde(“,”,$SelectCols))


将$filter\u order改为$rand..我知道这行不通,因为语法错误,所有东西都错了,这就是我需要帮助的地方

好吧,因为查询是在其他地方创建的,并且只填充来自此行的参数。。。你不能只改变这一行

查找实际查询。。。添加一个新列,如“rand()as random”,并将此行中的“start_date”更改为“random”

//编辑:

$query = " SELECT ".implode(",",$SelectCols).",rand() as random \r\n ".
     " FROM `#__ads` AS `a` \r\n".
     implode(" \r\n ",$JoinList)."\r\n".
     $where."\r\n".
     " GROUP BY `a`.`id` ".
     " ORDER BY ".implode(",",$Orderings)." \r\n "; 

应该给你一个名为“random”的随机列(当然,如果已经有一个同名的列,那会很麻烦…所以可能选择一个唯一的名称而不是“random”)

使用
“RAND()”
作为
ORDER BY
列。

谢谢,我用这个查询编辑了我的原始帖子!有什么想法吗?@Sherif。。。好了。。。但即使我不支持tandu的方法,因为类似SQL的代码应该属于生成查询的代码,而不是使用生成器的代码,在这种情况下,采用tandus解决方案会更容易,因为您不必更改您不完全理解的内容…谢谢,我试过这个,但由于某种原因它不起作用!是否有需要插入随机变量的位置?在$Orderings数组中?编辑:只需重新阅读您的文章,更改开始日期行,但仍然没有任何内容:/i我猜$filter\u order是您第一次发布代码行的参数编号3。。。在这种情况下,请将查询中的random重命名为
a.random
,因为您在传递给该函数的所有内容前面都放了“a.”但没有用:/I在查询中将random更改为a.random,并将start\u date值重命名为random。我是不是把事情搞混了哈哈?谢谢你,但那怎么行?这相当于17548年的书写顺序。我正在考虑在数据库的所有列名上使用array_rand。每次加载页面时,它都会按不同的列进行排序。
orderbyrand()
(没有其他内容)会随机化列的顺序。这是一个MySQL函数。这通常用于从MySQL中选择随机行
array\u rand
也是一个选项,但是如果要随机化,为什么要按查询中的任何内容排序呢?谢谢,这确实有效,我使用的是.rand()。php函数。然而,问题是,通过删除$Orderings的内爆数组,我失去了其他排序功能。如果有意义的话,我将如何使用rand和内爆数组?继续使用原始查询,并尝试使用$this->setState('filter_order',$app->getUserStateFromRequest('com_adsman.filter_order','filter_order','rand())。。。也许不干净,但足够简单。。。