2011-05-19 43 views
1

assending为了我不能够按升序排列输出表ORDER BY ASC工作中流露出表但表元素
我的代码如下工作:如何见下表安排在PHP

<?php 
$result = mysql_query("SHOW TABLES FROM st_db_1"); 
while($row = mysql_fetch_row($result)) { 
    $result_tb = mysql_query("SELECT id FROM $row[0] LIMIT 1"); 
    $row_tb=mysql_fetch_array($result_tb); 

    //checking for availbility of result_tb 
    if (!$result_tb) { 
       echo "DB Error, could not list tables\n"; 
       echo 'MySQL Error: ' . mysql_error(); 
       exit; 
    } 
    echo "<a href=exa.php?id=$row_tb[id]>{$row[0]}<br/><a/>" ; 
} 
mysql_free_result($result); 
mysql_free_result($result_tb); 
?> 
+0

你不需要' “SELECT ID FROM {$行[0]} LIMIT 1”' – Dycey 2011-05-19 15:58:43

+0

是啊,到数组引用必须在引用的字符串中缠绕大括号。这是一个问题。不知道这是否是ravi最初有的实际问题,但仍然是一个问题。 – WhiskeyTangoFoxtrot 2011-05-19 17:27:57

回答

0
$result_tb = mysql_query("SELECT id FROM $row[0] LIMIT 1 s ORDER BY id ASC"); 

,你必须使用ORDER BY

+0

这没有工作,因为没有一个名为“name”的字段 – ravi 2011-05-19 15:46:44

+0

@ravi你必须用你希望安排发生的字段替换名称,比如'id'或其他。 'name'只是一个例子。阅读我发布的链接 – afarazit 2011-05-19 15:49:41

0

如果你的意思是,

SHOW TABLES FROM st_db_1 ORDER BY x ASC 

不工作,那是因为没有这样的语法(HTTP:/ /dev.mysql.com/doc/refman/5.0/en/show-tables.html)。你可以,但是,通过PHP排序结果,然后选择的每个表:

<?php 
$result = mysql_query("SHOW TABLES FROM st_db_1"); 
$tableArr = array(); 

while($row = mysql_fetch_row($result)) { 
    $tableArr[] = $row; 
} 

usort($tableArr, function cmp($a, $b) { 
    if ($a[0] == $b[0]) 
     return 0; 
    return ($a[0] < $b[0]) ? -1 : 1; 
} 

foreach($tableArr as $row) { 
    $result_tb = mysql_query("SELECT id FROM $row[0] LIMIT 1"); 
    $row_tb = mysql_fetch_array($result_tb); 

    //checking for availbility of result_tb 
    if (!$result_tb) { 
     echo "DB Error, could not list tables\n"; 
     echo 'MySQL Error: ' . mysql_error(); 
     exit; 
    } 
    echo "<a href=exa.php?id=$row_tb[id]>{$row[0]}<br/><a/>"; 
} 

mysql_free_result($result); 
mysql_free_result($result_tb);