0

为此,我使用了下面的代码,但是如果我有更多的值想要分配给变量,那么这种方法将变得非常不切实际。还有什么其他方法可以达到相同的效果但更有效。注意:我知道 mysql 已经贬值了。

if(isset($_GET['sort_by'])){
    if($_GET['sort_by'] == 1){
        $sort = 'topic_id'; 
    }
    if($_GET['sort_by'] == 2){
        $sort = 'topic_id DESC'; 
    }
    if($_GET['sort_by'] == 3){
        $sort = 'mysql_num_rows($query) DESC'; 
    }
    if($_GET['sort_by'] == 4){
        $sort = 'mysql_num_rows($query)'; 
    }
}
4

5 回答 5

1

你可以使用switch case喜欢

switch($_GET['sort_by']) {
case 1:
    $sort = 'topic_id'; 
    break;   
case 2:
    $sort = 'topic_id DESC'; 
    break;
case 3:
    $sort = 'mysql_num_rows($query) DESC'; 
    break;
default:
    $sort = 'mysql_num_rows($query)'; 
}
于 2013-08-03T12:05:52.073 回答
1

使用一些查找数组:

$sort_look_up = array(
    1 => 'topic_id',
    2 => 'topic_id DESC',
    ....
    // add variants here
);
// then
if (isset($_GET['sort_by'])) {
    if (array_key_exists($_GET['sort_by'], $sort_look_up))
        $sort = $sort_look_up[$_GET['sort_by']];
    else
        $sort = '';    // set some default sort
}
于 2013-08-03T12:07:10.510 回答
0

使用 Switch case 而不是这样做。以下是链接: http://php.net/manual/en/control-structures.switch.php http://www.w3schools.com/php/php_switch.asp

于 2013-08-03T12:09:24.123 回答
0
$sorting=array(
   '', 'topic_id', 'topic_id DESC', 
   'mysql_num_rows($query) DESC',
   'mysql_num_rows($query)'
);

$sort=$sorting[(integer)$_GET['sort_by'];

(顺便说一句:你真的应该在 DBMS 上对数据进行排序,并避免运行多个查询)

于 2013-08-03T12:16:31.257 回答
0

您也可以使用它...请检查语法..

$queryArr=array("topic_id","topic_id DESC","mysql_num_rows($query) DESC","mysql_num_rows($query)");

$sort='';
if(isset($_GET['sort_by'])){
        $sort = (isset($queryArr[$_GET['sort_by']]))?$queryArr[$_GET['sort_by']]:'';
}
于 2013-08-03T12:18:34.530 回答