当涉及到php时,每个人都需要帮助我一个菜鸟:(
在我的数据库中,我有一个名为电影的表,我有12列,但我使用2个列来整理我的电影,有一个叫年,另一个是imdb_rating
这就是我对它们进行排序的方式
public function getRealMovies($lang=null, $p=null, $l=null, $sortby=null){
$movies = array();
if (($p) && ($l)){
$start = ($p-1)*$l;
$limit = " LIMIT $start,$l";
} else {
$limit = '';
}
if (!$sortby || $sortby=='abc'){
$order = "ORDER BY title ASC";
} elseif ($sortby=='date'){
$order = "ORDER BY date_added DESC";
} elseif ($sortby=='imdb_rating'){
$order = "ORDER BY imdb_rating DESC";
} elseif ($sortby=='year'){
$order = "ORDER BY year DESC";
}
$e = mysql_query("SELECT * FROM movies WHERE id IN (SELECT movie_id FROM movie_embeds) $order $limit") or die(mysql_error());
if (mysql_num_rows($e)>0){
$ids = array();
while($s = mysql_fetch_array($e)){
$movies[$s['id']] = $this->formatMovieData($s, $lang);
$ids[] = $s['id'];
}
if (count($ids)){
$flags = $this->getFlags($ids);
if (count($flags)){
foreach($movies as $movie_id => $val){
if (array_key_exists($movie_id,$flags)){
$movies[$movie_id]['languages'] = $flags[$movie_id];
} else {
$movies[$movie_id]['languages'] = array();
}
}
}
}
}
return $movies;
}
是否可以按两种方式排序,例如
} elseif ($sortby=='imdb_rating and year'){
$order = "ORDER BY imdb_rating and year DESC";
我希望有人可以提供帮助
感谢
答案 0 :(得分:2)
只需用逗号分隔列:
elseif($sortby == 'imdb_rating and year')
{
$order = 'ORDER BY `imbd_rating`, `year` DESC';
}
或者,如果您想以不同方式订购它们(例如按年份然后评级),请使用:
ORDER BY `year` DESC, `imdb_rating` ASC
答案 1 :(得分:1)
只需用逗号分隔订单栏。
$order = "ORDER BY imdb_rating, year DESC";
您也应该考虑使用其他MySQL扩展,{@ 1}}已弃用,请使用mysql_*
或mysqli_*
。我更喜欢PDO。
答案 2 :(得分:1)
您必须稍微更改语法。
"ORDER BY imdb_rating DESC, year DESC";
答案 3 :(得分:1)
用一个简单的逗号替换and
:
ORDER BY imdb_rating DESC, year DESC