最有效的方式来进行多种MySQL查询

时间:2013-04-04 20:42:30

标签: php mysql

我有一个从MySQL表中提取的主题公园列表。默认查询是

try
{
$sql = 'SELECT park_id, name, town, state, country
FROM tpf_parks ORDER BY name ASC';
$result = $pdo->query($sql);
}
catch (PDOException $e)
{
$error = 'Error fetching parks: ' . $e->getMessage();
//include 'error.html.php';//
exit();
}

按名称ASC排序。我想要上面的链接,按州和国家(最终评级)对列表进行排序。我还想要只显示主题公园的链接,只有水上乐园,只有'其他'和'全部显示'。

我正在看它的方式是每个查询需要一个新的php页面,但这意味着16个不同的PHP页面,每个查询一个。有没有办法将它全部保存在一个页面中,这样16个查询都在一个页面中运行并单击一个链接只加载新排序的列表替换旧列表?

除此之外,我还想要一个A-Z链接,通过点击一个链接将页面向下跳转到排序方法的字母,例如主题公园列表按州排序,点击“K”将跳下页面到堪萨斯州的公园。我正在考虑使用html锚点的这些链接,但是我如何将结果回显到26个卡盘(每个字母A-Z一个)。

很抱歉长篇大论的问题,但我很难过。 感谢

3 个答案:

答案 0 :(得分:1)

 //make a function  

function orderby($select, $var){
$sth = $dbh->prepare('SELECT {$select} FROM tpf_parks ORDER BY {$var}');
$sth->execute();
$result = $sth->fetchAll();
echo $result;
}
// run a function    
orderby ("park_id, name, town, state, country","name ASC");
//make all the functions you need like this

答案 1 :(得分:0)

使用排序功能通过某些脚本输出可能会更好。 (http://tablesorter.com/等。)

答案 2 :(得分:0)

尝试此功能:

   function getQueryOrder($field,$order){
      $query="";
      switch ($field){
         case "park_id":
             $query="SELECT park_id, name, town, state, country FROM tpf_parks ORDER BY park_id ".$order;
             break;
         }
         case "name":
             $query="SELECT park_id, name, town, state, country FROM tpf_parks ORDER BY name ".$order;
             break;
         }
         case [Other-field]:
             ..... 
             break;
         }
      }
      return $query;
   }

然后使用它:

try{
   $sql = getQueryOrder('park_id','ASC');// select the field park_id and order ASC
   $result = $pdo->query($sql);
}