MySQL/PHP foreach仍然只显示数据库中的第一个

MySQL/PHP foreach仍然只显示数据库中的第一个,php,mysql,database,foreach,Php,Mysql,Database,Foreach,我正在查询数据库中的结果,其中应查询多个结果。但是,当我尝试显示查询结果时,只显示了一个结果,因此我尝试使用foreach函数,但它仍然不起作用。我累了,不知道我做错了什么。有人知道出了什么问题吗 以下是MySQL查询代码: <?php //Database Information $dbhost = ""; $dbname = ""; $dbuser = ""; $dbpass = ""; //Connect to data

我正在查询数据库中的结果,其中应查询多个结果。但是,当我尝试显示查询结果时,只显示了一个结果,因此我尝试使用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;
    }

?>

我认为$caption是一个数组,所以您的代码应该是这样的

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

您的foreach循环也是错误的

您的变量是$rows而不是$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 } ?>

我认为$caption是一个数组,所以您的代码应该是这样的

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

您的foreach循环也是错误的

您的变量是$rows而不是$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 } ?>

您有以下错误

  • $caption之前未声明
  • 使用array_push或$caption[]=$rows;制作标题数组
  • 在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>        
    
    //数据库信息
    $dbhost=”“;
    $dbname=“”;
    $dbuser=”“;
    $dbpass=“”;
    //连接到数据库
    mysql_connect($dbhost,$dbuser,$dbpass)或die(“无法连接:”.mysql_error());
    mysql_选择_db($dbname)或die(mysql_error());
    $filename=$\u获取['filename'];
    $new\u captions=mysql\u query(“从标题中选择*,其中image=”http://math.stanford.edu/inc/img/PalmDrive.png“按idnum DESC LIMIT 5号指令”);
    $caption=array();
    while($rows=mysql\u fetch\u数组($new\u标题)){
    $caption[]=$rows;
    }
    foreach($标题为$行){
    
    }


  • 你有以下错误

  • $caption之前未声明
  • 使用array_push或$caption[]=$rows;制作标题数组
  • 在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>        
    
    //数据库信息
    $dbhost=”“;
    $dbname=“”;
    $dbuser=”“;
    $dbpass=“”;
    //连接到数据库
    mysql_connect($dbhost,$dbuser,$dbpass)或die(“无法连接:”.mysql_error());
    mysql_选择_db($dbname)或die(mysql_error());
    $filename=$\u获取['filename'];
    $new\u captions=mysql\u query(“从标题中选择*,其中image=”http://math.stanford.edu/inc/img/PalmDrive.png“按idnum DESC LIMIT 5号指令”);
    $caption=array();
    while($rows=mysql\u fetch\u数组($new\u标题)){
    $caption[]=$rows;
    }
    foreach($标题为$行){
    
    }


  • 它将始终存储最后一个值,因为每次执行循环时都会覆盖$caption的值。相反,您遵循Robert的答案,这是正确的方法。它将始终存储最后一个值,因为每次循环执行时您都会覆盖$caption的值。相反,你遵循罗伯特的答案,这是正确的方法。我也这么认为,但当我这样做时,甚至没有一个结果显示出来。当我将$caption作为单个变量保留时,它实际上会显示一个变量。也许我遗漏了什么。我想是的,但是当我这样做的时候,甚至没有一个结果显示出来。当我将$caption作为单个变量保留时,它实际上会显示一个变量。也许我错过了什么。