MySQL / PHP foreach по-прежнему отображается только в базе данных - PullRequest
0 голосов
/ 23 ноября 2011

Я запрашиваю результаты из базы данных, куда следует запрашивать более одного результата. Однако когда я попытался отобразить результат запроса, показался только один результат, поэтому я попытался использовать функцию 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 } ?>

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Я думаю, что $ caption является массивом, поэтому ваш код должен выглядеть следующим образом

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

РЕДАКТИРОВАТЬ:

Ваш цикл foreach также неверен.

Ваша переменная $ строк, а не $ заголовок.

<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 } ?>
1 голос
/ 23 ноября 2011

У вас есть следующие ошибки.

  1. $ заголовок не объявлен ранее.
  2. use array_push или $ caption [] = $ lines;сделать массив заголовков.
  3. Используйте переменную $ row в foreach.

    //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>        
    

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...