2012-01-13 50 views
0

我在MySQL表,其中的數據strored像:選擇數據programitically

table_1 
+-------+-------+ 
|field_0|field_1| 
+-------+-------+ 
| WCON | A | 
+-------+-------+ 
| KROGR | B | 
+-------+-------+ 
|  | C | 
+-------+-------+ 
| HALL | D | 
+-------+-------+ 
| OZARK | E | 
+-------+-------+ 
|  | F | 
+-------+-------+ 
| MAR | G | 
+-------+-------+ 
| KROGR | H | 
+-------+-------+ 
| MAR | I | 
+-------+-------+ 

有一些領域與field_0空值。

我的代碼在php中運行。有一個下拉菜單,其中所有字段名稱都是手動放置的,菜單中的值爲「all | WCON | KROGR | HALL | OZARK | MAR」。從下拉菜單中選擇「MAR」,它會顯示G和I,但是當選擇「全部」時,它需要顯示field_1的所有值。

我的代碼就是這樣

$field_value = "MAR"; 
$query = "select field_1 from table_1 where field_0 = '$field_value ' "; 

,但如何選擇使用$ FIELD_VALUE變量的所有值?

+0

不知道我是否正確理解您的問題,您的查詢會爲您提供field_1中的所有值,例如在你的例子G和我 – RMcLeod 2012-01-13 15:14:15

+0

這是你的真實代碼還是你在這裏重新輸入?您在查詢中拼錯了field_1(閱讀filed_1) – Tom 2012-01-13 15:14:24

+0

我在這裏重新輸入了@Tom – fean 2012-01-13 15:19:10

回答

8

如果$field_value不是「全部」,則只添加WHERE子句。此外,請確保您清理查詢中的任何用戶輸入。即使它來自下拉菜單,如果該值從另一個頁面傳遞到頁面,用戶也可以在其中插入錯誤的值。

$query = "SELECT field_1 FROM table_1"; 

if ($field_value != "all") 
    $query .= " WHERE field_0 = '". mysql_real_escape_string($field_value) ."'"; 
-1

添加PHP變量在SQL這樣的:

mysql_query(" 
SELECT DISTINCT 
c.id AS courseid, 
".$entityString.", 
c.fullname, 
c.shortname, 
c.startdate, 
u.id as userid, 

FROM mdl_course c 
join mdl_course_categories ct on ct.id = c.category 

".$whereClause." AND rl.id = 5 ".$orderClause." 
"); 

通知 「$ entityString。」 ,「$ where whereclause」。和「。$ orderClause」。都是變數。