在php中的foreach循环中使用while循环执行mysql查询

时间:2012-09-12 14:46:34

标签: php mysql xml foreach while-loop

您正在尝试浏览xml结果列表,我正在从这些结果中获取ID并在我的数据库中执行查询以获取更多信息。我把它放到foreach循环中,然后我的while循环获取mysql结果。一切都有效,直到我做while循环。我的页面空白,我没有错误..任何帮助都会非常感激! 这是我的代码:

foreach($data->HotelList->HotelSummary as $info):
    $hotelId = $info->hotelId;
    $title=$info->name;

?>
<!---------------------------------------------------------------------->
<!-----------------Listed hotel results div----------------------------->
<!---------------------------------------------------------------------->
<div class="listResults">

    <div class="hotelListing">
    <div class="hotelThumb">
    <?php 
    //----------Getting thumb url from database by HotelId-------
    $getImages = mysql_query("SELECT Caption FROM HotelImages WHERE ID = '4110'") or die(mysql_error());
    while($r=$mysql_fetch_array($getImages)):
        $img = $r['Caption'];
    ?>
    <img src="" width="200" height="180" alt="test image" class="thumb" />
    <?php endwhile; ?></div>
<?php endforeach; ?>

就像一张纸条,我试图获得num_rows,但我确实得到了正确的结果。所以查询正在执行,但是在while循环中发生了一些事情。

3 个答案:

答案 0 :(得分:2)

你的while循环很糟糕。取出功能前面的$

while($r=mysql_fetch_array($getImages)):

答案 1 :(得分:1)

while($r=$mysql_fetch_array($getImages)):
    $img = $r['Caption'];
?>

$之前有一个mysql_fetch_array(),删除它可以修复您的问题。

答案 2 :(得分:1)

您的主要问题是您在方法调用($)前放置$mysql_fetch_array()。它应该是mysql_fetch_array()

您不应忽视的一个重要问题是您在循环中调用静态查询。执行循环的外部查询,因为结果永远不会改变。然后,您可以将结果存储在数组中,并在循环中遍历数组。这将显着提高代码的性能。

<?php
//----------Getting thumb url from database by HotelId-------
$getImages = mysql_query("SELECT Caption FROM HotelImages WHERE ID = '4110'") or die(mysql_error());

$images = array();
while($img = mysql_fetch_array($getImages)) {
    $images[] = $img['Caption'];
}

foreach($data->HotelList->HotelSummary as $info):
    $hotelId = $info->hotelId;
    $title=$info->name;

?>
<!---------------------------------------------------------------------->
<!-----------------Listed hotel results div----------------------------->
<!---------------------------------------------------------------------->
<div class="listResults">

    <div class="hotelListing">
    <div class="hotelThumb">
    <?php 

    foreach($images as $img) :
    ?>
    <img src="" width="200" height="180" alt="test image" class="thumb" />
    <?php endforeach; ?></div>
<?php endforeach; ?>