2016-08-21 24 views
0

目前,我的計劃是在用戶名旁添加一個性別圖標。問題是,即使表中有多個表記錄,它只顯示1行,一些記錄突然消失。這是它的樣子: PHP使用多個while循環僅檢索1行

的代碼我使用:

$pdo = new PDO('connection'); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$stmt1 = $pdo->prepare("SELECT id, user_id, user, bid, date 
FROM auction_bids ORDER BY date DESC"); 
$stmt2 = $pdo->prepare("SELECT user_id, user, bid, date 
FROM auction_bids ORDER BY date DESC LIMIT 30"); 
$stmt11 = $pdo->prepare("SELECT pol FROM tb_users WHERE id = :user_id"); 

$stmt2->execute(); 
$r1 = $stmt1->fetch(PDO::FETCH_ASSOC); 
$stmt11->execute(array(':user_id' => $r1['user_id'])); 

$id1 = $r1['id']; 
echo '<table>'; 
while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC) && $r2 = $stmt11- >fetch(PDO::FETCH_ASSOC)) { 
    echo '<tr> 
     <td>' . $id1 . '</td> 
     <td><img height="16" width="16" alt="gender icon" src 
       ="../images/' . ($r2['pol'] == 1 ? 'male.png' : 'female.png') . '" /> 
     ' . $r1['user'] . '</td> 
     <td class="border-right">' . $r10['level'] . '</td> 
     <td>' . $r1['bid'] . ' FA</td> 
     <td><img height="16" width="16" alt="calendar" src 
       ="../images/calendar.png" /> 
      ' . date($dateFormatBids, strtotime($r1['date'])) . '</td> 
     </tr> 
    '; 
    $id1--; 
} 
echo '<table> 

使用while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC)) {..}循環不$r2,這是工作(除了性別顏色是一樣的,測試它應該是紅,對盧卡斯來說,應該是藍色的):

如果有什麼,你需要,請說。我對PHP和PDO相當陌生。

+0

變化''&&在一段時間''||它 – b0ne

回答

1

從行:$stmt11->execute(array(':user_id' => $r1['user_id']));你得到一個單一的記錄,所以while循環打印單行。

寫像查詢:

$stmt2 = $pdo->prepare("SELECT tu.pol, user_id, user, bid, date 
FROM auction_bids ab left join tb_users tu on ab.user_id = tu.id 
ORDER BY date DESC LIMIT 30"); 

現在:

while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC){ 
    //rest of the code should work... user $r1['pol'] instead of $r2 
} 
+0

工作是出色的。非常感謝你:) – Luke

+0

歡迎你! – Riad

0

檢查鏈接瞭解while循環: http://www.w3schools.com/js/js_loop_while.asp

你有這個問題的條件應該TRUE,而你($ R1 & & $ R 2)= TRUE只有當兩個變量都爲TRUE,$ R2第一次,它是第二次TRUE將會得到FALSE。

您應該只循環$ r1並在循環中調用$ r1。