Я пытаюсь получить первые X строк из базы данных по дате их публикации в порядке убывания, однако я обнаружил, что, хотя запрос работает отлично, если выполняется непосредственно в моей локальной базе данных, в PHP набор результатов всегда в порядкеиз первичных ключей.Вот фрагмент кода:
public static function getList( $numRows=1000000, $order="publicationDate DESC" ) {
$conn = new PDO( db_host, db_user, db_pw );
$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM blogs
ORDER BY " . ":order" . " LIMIT :numRows";
$st = $conn->prepare( $sql );
$st->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
$st->bindValue( ":order", $order, PDO::PARAM_STR);
$st->execute();
$list = array();
while ( $row = $st->fetch() ) {
echo $row['id'];
$article = new Blogpost( $row );
$list[] = $article;
}
// Now get the total number of articles that matched the criteria
$sql = "SELECT FOUND_ROWS() AS totalRows";
$totalRows = $conn->query( $sql )->fetch();
$conn = null;
return ( array ( "results" => $list, "totalRows" => $totalRows[0] ) );
}
Когда это выполняется, вывод эха выглядит следующим образом: 50 51 52 53 54
База данных была создана с помощью этого запроса (чтобы показатьВы структурируете):
DROP TABLE IF EXISTS blogs;
CREATE TABLE blogs
(
id smallint unsigned NOT NULL auto_increment,
publicationDate date NOT NULL,
title varchar(255) NOT NULL,
summary text NOT NULL,
content mediumtext NOT NULL,
views int(11) NOT NULL,
previewPic varchar(255) NOT NULL,
PRIMARY KEY (id)
);
Я пытался выполнить разные запросы, и он всегда возвращается в порядке возрастания первичного ключа.Почему?