如何正确地从数据库中检索

时间:2011-11-13 21:12:38

标签: php mysql

我是PHP的新手,我在解决这些数据时遇到了问题。它是根据调试器查找记录但是由于某种原因页面空白。任何人都可以请帮助我循环检索字段吗?我认为这是问题所在。我试着使用和不使用循环(我认为那里是错误的)而没有什么

 echo '<table class="table_content">
             <tr>
                 <td class="td_order" colspan="3" width="800px">
              Descriptions                  </td>
           </tr><tr>';

    for($counter = 0; $row2 = mysql_fetch_row($result2); $counter++)
                  {

                   while ($row2 = mysql_fetch_assoc($result)) {
                          $_name = $row["_name"];
                          $_image = $row["_image"];
                          $_disc = $row["_disc"];
                      }
                        print("<td valign='top' width='230px' height='300px'>");
                        print("<p style='font-size:18px; color:blue; padding:0;'>$_name</p>");
                        print("<img class='custom' alt='' src='$_image'/>");
                        print("<p>$_disc</p>");
                       print('</td>');
                    }
                  }

           echo '</tr></table> ';

我认为我对循环的这个逻辑做错了,我尝试了几件事......但没有......我很感激你的帮助。

PS:连接有效,查询正常工作..正在检索的数据是傻瓜

_name        _image                _disc   
Benjamin    images/benjamin.jpg    He's a great person
Jairo       images/jairo.jpg       Jairo has experience as a civil engineer..

4 个答案:

答案 0 :(得分:1)

删除for和while循环并使用;

进行更改
while($row = mysql_fetch_array( $result )){
   $_name = $row["_name"];
   $_image = $row["_image"];
   $_disc = $row["_disc"];
   ..

答案 1 :(得分:1)

我建议为您的应用添加一些更专业的方法,并部署像Smarty这样的模板系统。您将从视图与逻辑分离,缓存和易于维护的代码中受益。

在这种情况下,您可以通过以下方式解决问题:Example 7.33. Database example with {foreachelse}

<?php 
  include('Smarty.class.php'); 

  $smarty = new Smarty; 

  $dsn = 'mysql:host=localhost;dbname=test'; 
  $login = 'test'; 
  $passwd = 'test'; 

  // setting PDO to use buffered queries in mysql is 
  // important if you plan on using multiple result cursors 
  // in the template. 

  $db = new PDO($dsn, $login, $passwd, array( 
     PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); 

  $res = $db->prepare("select * from users"); 
  $res->execute(); 
  $res->setFetchMode(PDO::FETCH_LAZY); 

  // assign to smarty 
  $smarty->assign('res',$res); 

  $smarty->display('index.tpl');?>
?>

答案 2 :(得分:0)

使用:

while ( $row = mysql_fetch_row( $result2 ) ) 

答案 3 :(得分:0)

你要取两次行,这意味着你不会回显一半的行。这个解决方案通过foreach和变量的一些内联回显使事情变得更加清晰。如果启用了PHP短标记,则可以使用<?= $foo ?>代替<?php echo $foo ?>

<?php
    while($row = mysql_fetch_assoc($result2)) {
?>
<td valign="top" width="230px" height="300px">
    <p style="font-size:18px; color:blue; padding:0;"><?php echo $row['_name'] ?></p>
    <img class="custom" alt="" src='<?php echo $row['_image'] ?>"/>
    <p><?php echo $row['_disc'] ?></p>
</td>
<?php
}
?>