2011-11-23 82 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

我是这么认为的,但是,即使没有结果之一显示,当我做。当我离开$标题为一个变量,它实际上显示一个。也许我错过了一些东西。 –