【问题标题】:Get data from database and use loop in php从数据库中获取数据并在 php 中使用循环
【发布时间】:2015-06-25 18:20:21
【问题描述】:

我正在做大学项目,但我现在被困住了。

我有一个表,它有多个记录。记录由用户保存。我想在网页上显示特定用户存储的所有数据(在单独的 div 下)。 我可以使用以下代码从数据库中获取所有数据。

$prj= mysql_query("select * from project where uid=$uid");
        $record= mysql_fetch_assoc($prj);
        $project_name = "$record['project_name']";
        $short_dis= "$record['short_dis']";
        $poster= "$record['poster']";

mysql_close($prj);

这里有一些 php 代码。

    <div class="media services-wrap55 wow fadeInDown">
    <img class="img-responsive" src="uploads/poster/photo-original_827156899.jpg"><br>
 <a href="#"> <h4 class="media-heading">second project for testing</h4></a>
 <p>    by user</p>
 <p> second project for testing  second project for testing  second project for testing  second project for testing.</p>

 <a class="" href="iska-link.html">More ... </a>
 <p>
 <div id="progressBar2" class="tiny-green"><div></div></div><p>
 <div class="counter-inner"><div id=example1" data-countdown="07/02/2015 00:11:00"></div></div><p>
 <div class="col-sm-11 text-right">
   <div class="entry-meta">

 <span><i class="fa fa-comment"></i><a href="comments">  2 Comments </a></span>
 <span><i class="fa fa-thumbs-up"></i><a href="#"> 56 </a></span>
 <span><i class="fa fa-thumbs-down"></i><a href="#"> 56 </a></span>
 <span><i class="fa fa-star"></i><a href="#"> 56 Fav </a></span>
  </div>
  </div>
 </div>
</div>

如您所见,这些是静态数据。我想把数据库中的动态数据放到这个里面。

是否有任何建议如何通过循环获取 div 中的数据。

我可以使用 echo 显示一条记录。我不是在寻找整个代码,只是想要在 php 中使用它的数据库部分和一些示例。

【问题讨论】:

标签: php mysql


【解决方案1】:

我不知道你的表结构,所以给出了一个示例代码,以便你可以帮助并做相应的事情:-

    <?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$conn = mysqli_connect('hostname','username','password','databasename');

$prj= mysqli_query($conn,"select * from project where uid=$uid") or die(mysqli_error($conn));
        $record = array();
        while($row = mysql_fetch_assoc($prj)){
            $record[] = $row;
        }
mysql_close($conn);
?>
<?php foreach($record as $rec){?>
 <div class="media services-wrap55 wow fadeInDown">
    <img class="img-responsive" src="uploads/poster/<?php echo $rec['image_path'];?>"><br> // assuming that image_path is the field in table where you putted image name
 <a href="#"> <h4 class="media-heading"><?php echo $rec['project_name'];?></h4></a>// assuming that project_name is the field in table where you putted project name
 <p><?php echo $rec['user_name'];?></p>// assuming that user_name is the field in table where you putted user name
 <p><?php echo $rec['project_description'];?></p>// assuming that project_description is the field in table where you putted project name
<!-- in the same way you can do for others also -->
 <a class="" href="iska-link.html">More ... </a>
 <p>
 <div id="progressBar2" class="tiny-green"><div></div></div><p>
 <div class="counter-inner"><div id=example1" data-countdown="07/02/2015 00:11:00"></div></div><p>
 <div class="col-sm-11 text-right">
   <div class="entry-meta">

 <span><i class="fa fa-comment"></i><a href="comments">  2 Comments </a></span>
 <span><i class="fa fa-thumbs-up"></i><a href="#"> 56 </a></span>
 <span><i class="fa fa-thumbs-down"></i><a href="#"> 56 </a></span>
 <span><i class="fa fa-star"></i><a href="#"> 56 Fav </a></span>
  </div>
  </div>
 </div>
</div>
<?php } ?>

注意:- 停止使用mysql_*,它已被正式弃用。使用mysqli_*PDO

【讨论】:

  • 感谢您的回答。欣赏它。投票赞成。将进行测试并通知您。
  • 当然,但要根据您的表结构更改变量和值。我想你明白我想说什么。
  • 我明白了。我想知道的一件事是在您的代码中,您将所有表数据放入数组($record[] = $row;)中。我需要遵循相同的规则还是需要定义表格字段?
  • 如果您想显示有限数量的字段,请将其定义为$record['user_name'] = $row['user_name']; and so on 。如果你想显示所有,那就没必要了。
【解决方案2】:

首先,您应该使用 PDO 来查询您的数据库,而不是 mysql_query()。您现在的代码允许SQL injection

我会这样做:

$db = new PDO('mysql:host=CHANGE_THIS_TO_YOUR_HOST_NAME;
    dbname=CHANGE_THIS_TO_YOUR_DATABASE',
    'CHANGE_THIS_TO_YOUR_USERNAME',
    'CHANGE_THIS_TO_YOUR_PASSWORD');

$sql='select * from project where uid = :uid';
$query = $db->prepare($sql);
$query->bindValue(':uid', $_REQUEST['uid']);
$query->execute();
$projects = $query->fetchAll();

然后要在循环中显示它,请执行以下操作:

foreach ($projects as $project) {
   echo '<div class="project">';
   echo '<span class="project-name">'. $project['project_name'] .'</span>';
   echo '<span class="project-dis">'. $project['short_dis'] .'</span>';
   echo '<span class="project-poster">'. $project['poster'] .'</span>';
   echo '</div>';
}

【讨论】:

  • 感谢您的回答。欣赏它。投票赞成。将进行测试并通知您。
【解决方案3】:
// database query to get result
$result = mysqli_query($conn, "select * from project where uid=$uid")

// new array for all rows 
$rows = array();

// run mysql_fetch_assoc() in a loop (iterate) to get all rows from 
// the whole result set and reassign them to the prepared and 
// empty $rows array
// so that you can later iterate rows again to output your divs
while($row = mysql_fetch_assoc($result)){
    $rows[] = $row;
}

mysql_close($conn);

// now iterate the $rows array to output data for each $row
<?php foreach($rows as $row){ ?>

    // debug output to see what data is in a row
    var_dump($row);

    // print value of a key from the row array
    echo $row['some_keyname'];

   // use stringconcatenation to build your html output, e.g. div    
   echo '<div>' . $row['some_keyname'] . '</div>';

<?php } ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2016-01-18
    • 2019-02-18
    • 2015-08-27
    • 1970-01-01
    相关资源
    最近更新 更多