Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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
MySQL从多个相同的表中进行选择,并使用php随机显示结果_Php_Mysql - Fatal编程技术网

MySQL从多个相同的表中进行选择,并使用php随机显示结果

MySQL从多个相同的表中进行选择,并使用php随机显示结果,php,mysql,Php,Mysql,您好,我想在我的数据库中查询多个相同的表,这些表有不同的前缀,而不是随机显示结果,但不知何故,我需要跟踪该项的来源,我不知道如何查找 我这样做是因为我没有访问信息的权限 $query = "SHOW TABLES FROM mydb WHERE RIGHT( tables_in_mydb, 5 ) = 'table'"; $res = mysql_query($query); $num = mysql_num_rows($res); while($row = mysql_fetch_row($

您好,我想在我的数据库中查询多个相同的表,这些表有不同的前缀,而不是随机显示结果,但不知何故,我需要跟踪该项的来源,我不知道如何查找

我这样做是因为我没有访问信息的权限

$query = "SHOW TABLES FROM mydb WHERE RIGHT( tables_in_mydb, 5 ) = 'table'";
$res = mysql_query($query);
$num = mysql_num_rows($res);

while($row = mysql_fetch_row($res)) {

$numbers = explode('_', $row[0]);

  if($num > 0) {
    $q = "SELECT `this`, `that`, `something` FROM ".$numbers[0]."_idetinticaltables"; // :)
    $r = mysql_query($q);
    while($c = mysql_fetch_array($r)) {
       /*display the results randomly with an identifier where the come from*/
    }
  }
}

您可以使用ORDER BY RAND()对其进行随机排序

以下方法可能有效:

$aa=array()   
while($c = mysql_fetch_array($r)) 
{
   /*display the results randomly with an identifier where the come from*/
   $aa[]=$c;
}
echo $aa; // print "Array"
  • 获取您感兴趣的表格列表。你已经这么做了
  • 创建一个。每个
    SELECT
    语句对于要从中选择的表都是不同的,您可以在表名中添加一个列集(以便以后可以识别它):

  • 因为它是一个
    联合体
    ,所以您可以随机化整个顺序。请看,因为做得好并不是一件小事,所以上面的示例只是在那里放置了一个
    orderby
    LIMIT
    子句。由于表中有许多条目,它将杀死服务器


  • 将$number[0]存储在某个地方,因为这会告诉您数据来自哪个表。myabe我错了,但如果您在循环外回显$aa,它将只打印数组的第一项。@LaciK:嗯,它只输出
    数组
    ,就是这样。不是答案,不用麻烦了。这是个好主意,但如果我把结果打印出来,它只会一个表一个表地随机排列,结果会是这样的:表1按随机顺序排列,表2按随机顺序排列,表x按随机顺序排列,我想随机排列完整的结果,比如:表4,表1,表3,表2,不能在SHOW表中使用orderby,因此需要将引用放入数组,然后对这些名称使用shuffle($ar),并使用循环来显示随机结果。听起来怎么样?
    (SELECT *, TABLENAME = 'first_name_of_table' FROM first_name_of_table ...)
    UNION
    (SELECT *, TABLENAME = 'second_name_of_table' FROM second_name_of_table ...)
    UNION
    ...
    ORDER BY RAND() LIMIT 10;