簡體   English   中英

PHP在switch語句中查詢db

[英]PHP query db in switch statement

我在$ _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;


   }

}

兩種情況都共享來自數據庫的一個或兩個相似的數據,但每種情況的大多數內容僅在這種情況下才需要。

底線試圖發揮最佳性能並盡可能保持代碼清潔和高效。

謝謝!

當然,最好只查詢與您相關的數據。 捆綁數據庫,通過網絡傳輸更多數據,然后在PHP中做更多工作來過濾掉那些你不感興趣的數據是沒有意義的。 所以當然你不應該查詢“一切”。

另一方面,也許沒有理由switch 必須有一種重寫查詢的方法,以便您可以將變量的值注入其中,並且根據該值,它將返回您想要的數據。 這當然也取決於您的數據庫架構。

無論你決定做什么,都要小心不要暴露自己的SQL注入

如果沒有從數據庫中獲取數據的確切內容,很難說清楚,但有時我會使用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; 
}

當然,在switch語句中查詢比在它之前查詢要好。

它將導致用於存儲查詢結果的內存更少,並且可能執行的代碼更少(例如,如果您正在迭代查詢結果)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM