PHP在switch语句中查询db

时间:2011-12-03 04:19:33

标签: php database

我在$ _GET变量上使用switch语句来生成我想要的页面结果。

我一直在质疑在这种情况下运行查询的最佳方式,因为我根本不知道最佳实践或方法。所以我在下面有一些伪代码,我想知道最好的方法是什么。

这可能是一种在性能方面无关紧要的情况,但如果确实如此,我想确保我做得对。

if(isset($_GET['type'])){
   $var = $_GET['type'];

  //run the query now and select everything needed from the DB for either switch case. 
  //view implications that involve pulled data
   switch($var){

   case '1':

  //Or do I run the query here, getting only what I need for this situation
  //view implications that involve pulled data
   break;

   case '2':

   //again run the query here, getting only what I need for this situation
   //view implications that involve pulled data

   break;


   }

}

两种情况都共享来自数据库的一两个相似数据,但每种情况的大部分内容仅在这种情况下才需要。

尝试尽力而为,保持代码尽可能干净,高效。

谢谢!

3 个答案:

答案 0 :(得分:4)

当然,最好只查询与您相关的数据。捆绑数据库,通过网络传输更多数据,然后在PHP中做更多工作来过滤掉那些你不感兴趣的数据是没有意义的。所以你肯定不应该查询“一切”。

另一方面,也许switch也没有理由。必须有一种重写查询的方法,以便您可以将变量的值注入其中,并且根据该值,它将返回您想要的数据。这当然也取决于您的数据库架构。

无论您决定做什么,请注意不要让自己暴露于SQL injection

答案 1 :(得分:3)

如果没有从数据库中获取数据的确切内容,很难说清楚,但有时我使用if ... then或switch构建一个sql语句,然后执行完成的查询。

$sql = 'SELECT * FROM myTable WHERE ';
switch($_GET['type']){
  case 1:
    $sql += 'somefield="' . mysql_real_escape_string($_GET['param1']) . '"';
  break;
  default:
  break; 
}

答案 2 :(得分:1)

当然,在switch语句中查询比在它之前查询要好。

它将减少用于存储查询结果的内存,并且可能执行的代码更少(例如,如果您正在迭代查询结果)。