下面我有一个工作实现查询所选表,$ 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,第二列用于特定查询,但它是否需要像我一样明显?
欢迎任何批评。
答案 0 :(得分:2)
好像您正试图从数据库模式中获取表的第一列名称,以便您可以在ORDER BY
子句中使用它。你不真的必须在order by子句中指定列名,你可以指定序数位置:
SELECT * FROM $table ORDER BY 1 DESC ...
答案 1 :(得分: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);