首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序/限制表列表MySQL和PHP

问排序/限制表列表MySQL和PHP
EN

Stack Overflow用户
提问于 2014-11-17 09:07:17
回答 3查看 212关注 0票数 2

我想做select并打印出我拥有的所有表(到目前为止我已经知道了),然后使用对其进行限制,然后按表名排序,并且每页有10个结果。

我该怎么做?我知道如何从表中获取数据,但我不知道如何仅用表来完成它。

到目前为止,我有这样的看法:

代码语言:javascript
复制
function list_tables($type){

$sql = "SHOW TABLES FROM example";
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)){
    $table_name = $row[0];
    echo $table_name; //edited out a lot to keep it simple
    //I'm just printing out a lot of data based on table name anyway
}
mysql_free_result($result);
}

到目前为止,它只打印出所有的表名(+额外的信息,我打印的表名)全部在同一页,它得到的点,它需要永远滚动。我想把它限制在每页10-20篇,而不是一页上几百篇。

如果有人能帮我的话,非常感谢。非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-17 10:01:01

我做了这个:

代码语言:javascript
复制
function list_tables(){
$amtperpage = 15;
$sql = "SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA = 'my_dbname'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$total_rows = $row[0];

//pagination stuff here
if(isset($_GET['p'])) $curpage = intval($_GET['p']); else $curpage=1;
$start = abs(($curpage-1)*amtperpage);
$sql = "SELECT TABLE_NAME FROM information_schema.tables ORDER BY TABLE_NAME ASC LIMIT $start,$per_page";
$res = mysql_query($sql);
while($row=mysql_fetch_array($res)) $DATA[++$start]=$row;
$uri = strtok($_SERVER['REQUEST_URI'],"?")."?";
$tmpget = $_GET;
unset($tmpget['p']);
if($tempget){
    $uri .= http_build_query($tmpget)."&";
}
$num_pages=ceil($total_rows/$amtperpage);
for($i=1;$i<=$num_pages;$i++) $PAGES[$i]=$uri.'p='.$i;
?><div id="container">Pages: 
foreach ($PAGES as $i => $link){
if($i == $curpage){
=$i
} else {
?><a href="<?=$link?>"><?=$i?></a>
}
} ?>
foreach($DATA as $i => $row){
$table_name = $row[0];
//use my functions to get data for each table name and list it and such
}
}

这是高度屠杀,因为我有很多东西,本来可能会妨碍了重点,但这应该是可行的。感谢那些帮助我的人。:)

票数 0
EN

Stack Overflow用户

发布于 2014-11-17 09:33:02

根据页码计算偏移量和限制,然后尝试以下查询:

代码语言:javascript
复制
function list_tables($type, $offset, $limit){

$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'example' ORDER BY TABLE_NAME LIMIT $offset, $limit";
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)){
    $table_name = $row[0];
    echo $table_name; //edited out a lot to keep it simple
    //I'm just printing out a lot of data based on table name anyway
}
mysql_free_result($result);
}
票数 0
EN

Stack Overflow用户

发布于 2014-11-17 09:38:42

使用下面的给定查询,它支持限制,这样您就可以对表名进行分页。

代码语言:javascript
复制
select * from information_schema.tables LIMIT 5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26969051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档