[英]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.