2

下面我有一个查询所选表 $table 并返回按表的第一列降序排列的 $numRows 行的工作实现:

$cQuery = "SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$table' LIMIT 1";

$mysqli = new mysqli( DB_LOCATION , DB_USERNAME , DB_PASSWORD );
 if ( $mysqli -> connect_errno )
     err("Could not connect to DB. " . $mysqli->connect_error);

$result = $mysqli -> query( $cQuery ) -> fetch_array();     
$query = "SELECT * FROM $table ORDER BY $result[0] DESC LIMIT $numRows";

$result = $mysqli -> query( $query );

我想知道是否有人知道这样做的方法只有一个 mysqli 语句?必须有两个表查询;一个用于列 ID,第二个用于特定查询,但它是否需要像我所拥有的那样不同?

欢迎任何批评。

4

2 回答 2

2

似乎您正在尝试从数据库模式中获取表的第一个列,以便您可以在ORDER BY子句中使用它。您实际上不必在 order by 子句中指定列名,您可以指定序数位置:

SELECT * FROM $table ORDER BY 1 DESC ...
于 2013-05-03T20:12:46.720 回答
0

因此,只需使用子查询:

$query = "SELECT * FROM INFORMATION_SCHEMA.$table ORDER BY (
    SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = '$table' LIMIT 1) DESC
  LIMIT $numRows";

$result = $mysqli->query($query);
于 2013-05-03T20:07:54.757 回答