Bootstrap

入门PHP就来我这(高级)12 ~ 获取数据

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。


1 从结果集中获取一行作为对象

表中数据行如下:

利用mysqli_fetch_array()函数获取结果集中的数据,获取的是所有的数据行,上篇文章已经介绍了。本篇介绍一个新的函数:mysqli_fetch_object()可以轻松的获取一行数据作为对象,语法如下:

//返回一个对象而不是一个数组,该函数通过字段名来访问数组
mixed mysqli_fetch_object(resource result)
//访问结果集行中元素的语法如下:
$row->col_name  //col_name 为字段名, $row代表结果集

接下来看下如何在案例中使用(展示核心代码):

<tbody>
                            <?php while($obj = mysqli_fetch_object($result)){ 
                               if(is_object($obj)){ //判断对象是否存在    
                            ?>

                                <tr>
                                    <td class="table-text">
                                        <?php echo $obj->id ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $obj->name ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $obj->category ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $obj->price ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $obj->publish_time ?>
                                    </td>
                                    <td>
                                        <a href="editBook.php?id=<?php echo $obj->id ?>">
                                            <button class="btn btn-info edit">编辑</button>
                                        </a>
                                        <a href="deleteBook.php?id=<?php echo $obj->id ?>">
                                            <button class="btn btn-danger delete">删除</button>
                                        </a>
                                        
                                    </td>
                                </tr>
                            <?php }
                             } ?>
                        </tbody>

 2 从结果集中获取一行作为枚举数组

mysqli_fetch_row()函数可以从结果集中取得一行作为枚举数组,即数组的键用数字索引来表示。

mixed mysqli_fetch_row(resource $result)

该函数返回根据所取得的行生成的数组,如果没有更多行则返回null。返回数组的偏移量从0开始,即以$row[0]的形式访问第一个元素(只有一个元素时也是如此)。

接下来看下如何在案例中使用(展示核心代码):

<tbody>
                            <?php while($rows = mysqli_fetch_row($result)){ 
                              
                            ?>

                                <tr>
                                    <td class="table-text">
                                        <?php echo $rows[0] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows[1] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows[2] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows[3] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows[4] ?>
                                    </td>
                                    <td>
                                        <a href="editBook.php?id=<?php echo $rows[0] ?>">
                                            <button class="btn btn-info edit">编辑</button>
                                        </a>
                                        <a href="deleteBook.php?id=<?php echo $rows[0] ?>">
                                            <button class="btn btn-danger delete">删除</button>
                                        </a>
                                        
                                    </td>
                                </tr>
                            <?php 
                             } ?>
                        </tbody>

  3 获取查询结果集中的记录数

//语法如下
int mysqli_num_rows(resource $result)

注意:该函数只对select语句有效,要取得被insert、update或者delete语句所影响到的行数,则要使用mysqli_affected_rows()函数。

 在index.php里设置mysqli_num_rows()函数统计行数,在lists.html里显示行数:

<?php
 $dbName = 'db_test';
 $link = mysqli_connect('localhost','root','passwd');

 if(mysqli_select_db($link,$dbName)) {
    
    $result = mysqli_query($link,"select * from books");
    $numRows = mysqli_num_rows($result);
    
    include_once('lists.html');
  
 } else{
  echo $dbName."未连接!";
 }
?>

在</table>下面添加一行: 

<p class="text-primary text-center">共计 <?php echo $numRows ?> 条</p>

 效果如下:

  4 释放内存

数据库操作完后,需要关闭结果集,以释放系统资源,采用mysqli_free_result()函数释放内存。语法如下:

void mysqli_free_result(resource $result)

注意:mysqli_free_result()函数将释放所有与结果符$result相关联的内存。该函数仅需要在考虑到返回很大的结果集会占用较多内存时调用。在执行结束后所有关联的内存都会被自动释放。

 5 关闭连接(数据库连接)

完成数据库的操作后,要及时断开与数据库的连接并释放内存,否则会浪费大量的内存空间,在访问量较大的Web项目中,很可能导致服务器崩溃。在MySQL数据库中,使用mysqli_close()函数断开与MySQL服务器的连接,语法如下:

bool mysqli_close(mysqli $link)
<?php
 $dbName = 'db_test';
 $link = mysqli_connect('localhost','root','passwd');

 if(mysqli_select_db($link,$dbName)) {
    
    $result = mysqli_query($link,"select * from books");
    $numRows = mysqli_num_rows($result);
    
    include_once('lists.html');
    //释放内存
    mysqli_free_result($result);
    //关闭Mysql服务器连接
    mysqli_close($link);
  
 } else{
  echo $dbName."未连接!";
 }
?>

下篇 PHP 结合数据库实现图书信息管理小案例


大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。

另外,自己创建的一个技术qq群,玩转技术群,该群里功能:分享技能,电子书,代码,以及兼职项目等交流,欢迎大家加入一起交流。

;