2014-07-08 59 views
-1

我想在While循環中使用動態變量編寫查詢,但似乎無法使其正常工作。我是PDO的新手,所以我不是100%,如果這是做這件事的正確方法。與數據庫($ db)的連接工作正常,並且查詢運行正常,沒有第二個$ STH2行。請幫助:)在循環中使用變量的PDO子查詢

<?php 

//This will list player info so the user can get the correct player ID 
$STH = $db->query('SELECT id, name, tag from wdlTeams'); 

//Setting the fetch mode 
$STH->setFetchMode(PDO::FETCH_ASSOC); 

//Create listbox object and populates options with team names 
echo "<select name='teamID'>"; 
while($row = $STH->fetch()) { 
    $id = $row['id']; 
    $name = $row['name']; 
    $tag = $row['tag']; 
    $seasonId = $row['seasonId']; 

    $STH2 = $db->prepare('SELECT name from wdlSeasons where id=$seasonId'); 
    $STH2->execute(); 
    $seasonName = $STH2->fetchColumn(); 

    echo "<option value='$id'>$tag - $name ($seasonName)</option>"; 
    echo "<br />"; 
} 
echo "</select>"; 

?> 

我也曾試圖改變以

$STH2 = $db->prepare("SELECT 'name' from 'wdlSeasons' where id='$seasonId'"); 

,但沒有運氣

+0

預處理語句沒有意義但是,儘管如此,直接將變量注入到SQL字符串中。至少在MySql中'''不是標識符的正確引用,請嘗試反引號。此外,PHP不會插入單個qoutes。 –

+1

而不是循環中的第二個查詢,只需在第一個查詢 - >從wdlTeams wT中選擇wT.id,wT.name,wT.tag,wS.name作爲seasonName wT的LWT JOIN wdlSeasons wS。 id = wT.seasonId' – Sean

+0

謝謝,這個作品完美 – user3490756

回答

0

試試這個:

$STH2 = $db->prepare('SELECT name from wdlSeasons where id=:id'); $STH2->bindParam(':id', $seasonId); $STH2->execute();