有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享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里显示行数:
$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">共计 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)
$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 结合数据库实现图书信息管理小案例