2012-02-20 94 views
0

我是一名iphone程序員,在php和mysql中並不那麼出色。我的問題是,我有一個在線高分系統,在我的所有模式中都有3張桌子。我試圖根據來自GET變量的輸入來選擇表,但它不起作用。這是我在php中的代碼。根據GET變量選擇表格

$typeGame = isset($_GET['type']) ? $_GET['type'] : ""; 
    $typeGame = mysql_real_escape_string($type); 
    if ($typeGame === "Sprint") { 
$table = "highscoresSprint"; 
    } 
    else if ($typeGame === "Normal") 
    { 
    $table = "highscoresNormal"; 
    } 
    else 
    { 
    $table = "highscoresMarathon"; 
    } 

其中typeGame是請求的遊戲類型,$ table是表格。

我希望你能幫助我,它就是行不通的。

乾杯,喬。

+0

任何錯誤輸出張貼這件事看到的事情嗎? 'echo $ _GET ['type']'返回什麼?並且url必須是'http://test.com/game?type = Sprint'類似的東西。 – Alex 2012-02-20 19:06:23

+0

echo $ typeGame =? – 2012-02-20 19:08:36

+0

@ Furgas的回答應該這樣做 – Alex 2012-02-20 19:09:15

回答

3

嘗試:的

$typeGame = mysql_real_escape_string($typeGame); 

代替:

$typeGame = mysql_real_escape_string($type); 
+0

+1,噢,我沒有看到那一個。 – Alex 2012-02-20 19:08:51

+0

謝謝兄弟,這解決了我的問題,我會在4分鐘內接受它。謝謝!! – coderjoe 2012-02-20 19:14:54

0
$typeGame = isset($_GET['type']) ? $_GET['type'] : ""; 
//You don't need this - >$typeGame = mysql_real_escape_string($type); 
if ($typeGame == "Sprint") { // Change to == instead of === 
$table = "highscoresSprint"; 
} else if ($typeGame == "Normal") // Change to == instead of === 
{ 
$table = "highscoresNormal"; 
} 
else 
{ 
$table = "highscoresMarathon"; 
} 
+1

爲什麼不是===?我的個人規則:當您確定預期的類型時,使用===(或!==)。 – Furgas 2012-02-20 19:13:19

+0

好點@Furgas。另外我認爲使用'mysql_real_escape_string'是適當的,因爲它是一個可以通過URL修改的SQL字符串。 – 2012-02-20 19:16:10

+0

但這不是傳遞給他的查詢的變量,至少這不是我讀它的方式。我沒有看到需要明確地比較類型,我通常不用字符串。但是你還是要說一個好點的Furgas,也許我會開始實施它 – romo 2012-02-20 19:19:49

0
$typeGame = mysql_real_escape_string($type); 

我猜你想說:

$ typeGame = mysql_real_escape_string($ typeGame);

0

Furgas答案將解決這個問題,但我對別人的嵌套在切換會這樣,所以纔想

switch (
    mysql_real_escape_string(
     isset($_GET['type']) ? $_GET['type'] : '' 
    ) 
) { 
    case 'Sprint': 
     $table = "highscoresSprint"; 
     break; 
    case 'Normal': 
     $table = "highscoresNormal"; 
     break; 
    default: 
     $table = "highscoresMarathon"; 
     break; 
}