繁体   English   中英

从数据库检索排序的表名。 MySQL的PHP

[英]Sorting fetched tables names from databse. Mysql PHP

我需要获取与其基本表关联的所有备份表。 例如, table_name产生table_name_backup1, table_name_backup2 ..etc。 这样做的原因是因为我不想手动获取备份表名称,可能有数十个备份表名称,并且它们是根据游戏星期和日期命名的,因此无法预测其名称。

例如,如果$ tbl ='ranking',执行此语句后得到的结果是:

...

function getTables($tbl){
  $query = "SHOW TABLES LIKE '" . $tbl . "_gw%' ORDER BY ";

结果

 [0] => ranking_gw0_231012
    [1] => ranking_gw10_231012
    [2] => ranking_gw11_231012
    [3] => ranking_gw1_231012
    [4] => ranking_gw2_231012
    [5] => ranking_gw3_231012
    [6] => ranking_gw4_231012
    [7] => ranking_gw5_231012
    [8] => ranking_gw6_231012
    [9] => ranking_gw7_231012
    [10] => ranking_gw8_231012
    [11] => ranking_gw9_231012
    [12] => ranking       // I insert this manually before return statement. 

一切正常,除了备份数量超过9个的表的顺序不正确之外,因为表gw10出现在索引1中,因此在我提交其值时显示错误的数据顺序。

我一直在想做一个函数,将提取gwx中的数字并重新排序整个事情,但是我认为必须有一种更简单的方法。

那么,如何显示这些表的正确顺序?

顺便说一句,当我在MYSQLYOG中查看我的数据库时,它们以相同的顺序出现,而在我的phpmyadmin中,它们以正确的顺序显示,而gw11显示为最后一个。 可能有两个表具有相同的gwx值,例如,ranking_gw0_080812和ranking_gw0_101012

您应该执行以下操作:

select table_name from information_schema.tables 
  where table_schema="yourDbName" and table_name like '" . $tbl . "_gw%' 
  order by create_time;

由于只需要与特定模式匹配的表(按创建时间排序)即可。

您可以尝试可以订购的其他方法:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema='your_database_name'  
ORDER BY table_name ASC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM