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