2015-12-22 115 views
0

我有一個查詢來返回一個球員和他的一個Web應用程序的選擇。當我在MySQL中運行它時,我得到了我期望的結果:7名玩家和他們接下來5場比賽的選擇。但是,當我將它移入我的PHP腳本時,只有三名選手被選中。所有5個選擇,返回三個人,每次相同的三個人,而不是「前三個人」或「最後三個人」SQL Query在MySQL中返回完整結果,部分結果返回到PHP

我一直在這裏砸了我幾個小時。 ..

MySQL查詢:

SELECT Players.name, BowlTeams.team_name 
FROM Players, BowlTeams, BowlGames, PlayerPicks 
WHERE Players.ID = PlayerPicks.playerID AND PlayerPicks.win_team = BowlTeams.ID AND PlayerPicks.bowlID = BowlGames.ID AND 
(BowlGames.ID = 42 OR BowlGames.ID = 41 OR BowlGames.ID = 40 OR BowlGames.ID = 39 OR BowlGames.ID = 38) 
ORDER BY Players.name, BowlGames.ID DESC 

PHP代碼:

try { 
    $stmt = $conn->prepare('SELECT Players.name, BowlTeams.team_name 
     FROM Players, BowlTeams, BowlGames, PlayerPicks 
     WHERE Players.ID = PlayerPicks.playerID AND PlayerPicks.win_team = BowlTeams.ID AND PlayerPicks.bowlID = BowlGames.ID AND 
     (BowlGames.ID = :bowl_zero OR BowlGames.ID = :bowl_one OR BowlGames.ID = :bowl_two OR BowlGames.ID = :bowl_three OR BowlGames.ID = :bowl_four) 
     ORDER BY Players.name, BowlGames.ID DESC'); 
    $stmt->bindParam(':bowl_zero', $bowl0, PDO::PARAM_INT); 
    $stmt->bindParam(':bowl_one', $bowl1, PDO::PARAM_INT); 
    $stmt->bindParam(':bowl_two', $bowl2, PDO::PARAM_INT); 
    $stmt->bindParam(':bowl_three', $bowl3, PDO::PARAM_INT); 
    $stmt->bindParam(':bowl_four', $bowl4, PDO::PARAM_INT); 
    $stmt->execute(); 
    $emparray = array(); 
    while($row = $stmt->Fetch(PDO::FETCH_ASSOC)) { 
     $emparray[] = $row; 
    } 
    $stmt->closeCursor(); 
    $stmt = null; 
    echo json_encode($emparray); 
} catch(PDOException $e) { 
    echo "Oh no! Something f'd up! Error: " . $e->getMessage(); 
}  

我一再的$ bowl0-4變量正確填充驗證(這會影響BowlTeams.team_name返回,這些都很好)。

我只是沒有得到我的所有球員回來......

感謝您的幫助,我在我束手無策。

ķ

+0

我不是一個PHP的專家,但也許你會覆蓋結果數組,而不是推入它的條目... http://www.w3schools.com/php/func_array_push.asp –

+0

此外,如果我分在實際PHP中參數的值,我收到相同的輸出(只有三名玩家返回)。 –

回答

1

作爲一個起點,這似乎更容易閱讀...

SELECT p.name 
    , t.team_name 
    FROM BowlGames g 
    JOIN PlayerPicks k 
    ON k.bowlID = g.ID 
    JOIN Players p 
    ON p.ID = k.playerID 
    JOIN BowlTeams t 
    ON t.ID = k.win_team 
WHERE 
    AND g.ID IN(42,41,40,39,38) 

...但不知道您的架構,很難進一步幫助。

+0

謝謝,是的,我喜歡那個更好....同樣的問題與不匹配的結果.... –

+0

好吧,也許編輯你的問題,無論如何合併此信息。 – Strawberry

1

想通了。我正在開發一個開發版本,數據庫導入失敗,所以我有一箇舊版本的數據....

哇。我認爲,當它發生的時候,這是一個愚蠢的時刻...

謝謝大家。

+0

有時候會發生這樣的事情,休息一下。 –

+0

史詩!這正是發生在我身上的事情。謝謝! –