[英]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.