2011-11-23 46 views
0

我查詢從數據庫中,有超過一個結果應查詢結果。但是,當我試圖顯示查詢的結果時,只顯示一個結果,所以我嘗試使用foreach函數,但它仍然不起作用。我被打敗了,不知道我做錯了什麼。任何人都知道發生了什麼問題?的MySQL/PHP的foreach仍然只能顯示第一數據庫

這裏的MySQL查詢代碼:

<?php 


    //Database Information 
    $dbhost = ""; 
    $dbname = ""; 
    $dbuser = ""; 
    $dbpass = ""; 

    //Connect to database 
    mysql_connect ($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error()); 
    mysql_select_db($dbname) or die(mysql_error()); 

    $filename = $_GET['filename']; 

$new_captions = mysql_query("SELECT * from captions where image = 'http://math.stanford.edu/inc/img/PalmDrive.png' ORDER BY idnum DESC LIMIT 5"); 
while($rows = mysql_fetch_array($new_captions)){ 
    $caption = $rows; 
    } 

?> 

而這裏的的foreach:

<?php foreach($caption as $rows) {?> 

<div id="set_caption" style="width:<?php echo $caption['width'];?>px; height:<?php echo $caption['height'];?>px; left:<?php echo $caption['posleft'];?>px; top:<?php echo $caption['postop'];?>px;"><?php echo $caption['text'];?></div> 

<?php } ?> 
+0

它總是存儲在最後一個值,因爲要覆蓋$標題的每執行一次循環的值。相反,你要遵循羅伯特的正確方法。 –

回答

1

您有以下錯誤。

  1. $標題是不是之前宣佈。
  2. 使用array_push或$ caption [] = $ rows;製作字幕數組。
  3. 在foreach中使用$ row變量。

    //Database Information 
    $dbhost = ""; 
    $dbname = ""; 
    $dbuser = ""; 
    $dbpass = ""; 
    
    //Connect to database 
    mysql_connect ($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error()); 
    mysql_select_db($dbname) or die(mysql_error()); 
    
    $filename = $_GET['filename']; 
    
    $new_captions = mysql_query("SELECT * from captions where image = 'http://math.stanford.edu/inc/img/PalmDrive.png' ORDER BY idnum DESC LIMIT 5"); 
    
    $caption = array(); 
    
    while($rows = mysql_fetch_array($new_captions)){ 
        $caption[] = $rows; 
    } 
    
    foreach($caption as $row) {   
    <div id="set_caption" 
        style="width:<?php echo $row['width'];?>px; 
          height:<?php echo $row['height'];?>px; 
          left:<?php echo $row['posleft'];?>px; 
          top:<?php echo $row['postop'];?>px;"> 
        <?php echo $row['text'];?> 
    </div>   
    

    }

+0

完美!我明白我做錯了什麼。非常感謝! –

3

我覺得$標題是一個數組,所以你的代碼應該是這樣的

while($rows = mysql_fetch_array($new_captions)){ 
    $caption[] = $rows; 
} 

編輯:

你的foreach循環也是錯誤的。

您的變量是$ rows not $ caption。

<div id="set_caption" style="width:<?php echo $rows['width'];?>px; height:<?php echo $rows['height'];?>px; left:<?php echo $rows['posleft'];?>px; top:<?php echo $rows['postop'];?>px;"><?php echo $rows['text'];?></div> 

<?php } ?> 
+0

我是這麼認爲的,但是,即使沒有結果之一顯示,當我做。當我離開$標題爲一個變量,它實際上顯示一個。也許我錯過了一些東西。 –

相關問題