对于update、insert、delete请参考http://www.cnblogs.com/-beyond/p/8457580.html

执行select,如果SQL语句执行成功,那么返回的是一个mysqli_result对象,如果SQL语句出错,则返回false。

<?php
$mysqli = new Mysqli();
$mysqli->connect("localhost","root","root","test");
if ( $mysqli->connect_errno ){
die( $mysqli->connect_error );
}
$mysqli->set_charset("utf8");
$sql = "select * from mysqli;";
$mysqli_result = $mysqli->query($sql);
if( ! $mysqli_result ){
echo "error:".$mysqli->errno." : ".$mysqli->error;
} else {
print_r( $mysqli_result ); //打印查看会是一个mysqli_result对象
}
$mysqli->close();
?>

  结果如下:

mysqli_result Object
(
[current_field] => 0
[field_count] => 2
[lengths] =>
[num_rows] => 3
[type] => 0
)

  上面的这几项都是mysqli_result类的成员属性,都是可以通过mysqli_result的对象加 ->属性访问,比如查看结果集的条数

<?php
$mysqli = new Mysqli();
$mysqli->connect("localhost","root","root","test");
if ( $mysqli->connect_errno ){
die( $mysqli->connect_error );
}
$mysqli->set_charset("utf8");
$sql = "select * from mysqli;";
$mysqli_result = $mysqli->query($sql);
if( ! $mysqli_result ){
echo "error:".$mysqli->errno." : ".$mysqli->error;
} else {
echo $mysqli_result->num_rows;
}
$mysqli->close();
?>

  

获取完整结果集

  使用mysql_result::fetch_all([fetch_type])方法获取一个索引数组的结果集,该结果集为完整的结果集;

  参数fetch_type可以为MYSQLI_NUM(索引数组,默认)、MYSQLI_ASSOC(关联数组)、MYSQLLI_BOTH(两者都要),但是这个方法只适用于mysqlnd,mysqlnd在PHP5.4以后已经作为默认驱动,

<?php
$mysqli = new Mysqli();
$mysqli->connect("localhost","root","root","test");
if ( $mysqli->connect_errno ){
die( $mysqli->connect_error );
}
$mysqli->set_charset("utf8");
$sql = "select * from mysqli;";
$mysqli_result = $mysqli->query($sql);
if( $mysqli_result && $mysqli_result->num_rows>0 ){
$res = $mysqli_result->fetch_all();
print_r($res);
} else {
echo "error:".$mysqli->errno." : ".$mysqli->error;
}
$mysqli->close();
?>

  结果如下:

Array
(
[0] => Array
(
[0] => 1
[1] => aaaa
) [1] => Array
(
[0] => 2
[1] => bbbb
) )

 

获取一条结果集

  移动内部指针:mysqli_result::data_seek( int offset ) 只需指定offset值即可。

  使用mysqli_result::fetch_row()来获取“指针所值”的一条数据,每取一次数据,指针指向下一条记录,结果以索引数组返回。

  使用mysqli_result::fetch_array([fetch_type]),参数fetch_type可以为MYSQLI_NUM(索引数组)、MYSQLI_ASSOC(关联数组)、MYSQLLI_BOTH(两者都要,默认)

  使用mysqli_result::fetch_assoc()来获取一条数据,和fetch_row类似,只不过返回的结果集是以关联数组形式。

  还可以使用fetch_object()以一个对象的形式返回。

<?php
$mysqli = new Mysqli();
$mysqli->connect("localhost","root","root","test");
if ( $mysqli->connect_errno ){
die( $mysqli->connect_error );
}
$mysqli->set_charset("utf8");
$sql = "select * from mysqli;";
$mysqli_result = $mysqli->query($sql);
if( $mysqli_result && $mysqli_result->num_rows>0 ){ $res = $mysqli_result->fetch_row();
print_r( $res ); //Array ( [0] => 1 [1] => aaaa ) $mysqli_result->data_seek(0);
$res = $mysqli_result->fetch_array();
print_r( $res ); //Array ( [0] => 1 [id] => 1 [1] => aaaa [name] => aaaa ) $mysqli_result->data_seek(0);
$res = $mysqli_result->fetch_assoc();
print_r( $res ); //Array ( [id] => 1 [name] => aaaa ) } else {
echo "error:".$mysqli->errno." : ".$mysqli->error;
}
$mysqli->close();
?>

  

释放结果集

  mysqli_result::free

  mysqli_result::close

  mysqli_result::free_result

  这三者都可以

遍历结果集

在遍历结果集之前可以先判断结果集中是否有记录。

方法一:一次性获取(fetch_all),然后循环遍历

<?php
$mysqli = new Mysqli();
$mysqli->connect("localhost","root","root","test");
if ( $mysqli->connect_errno ){
die( $mysqli->connect_error );
}
$mysqli->set_charset("utf8");
$sql = "select * from mysqli;";
$mysqli_result = $mysqli->query($sql);
if( $mysqli_result && $mysqli_result->num_rows>0 ){
$res = $mysqli_result->fetch_all();//一次性去的所有数据
foreach( $res as $row ) {
print_r( $row );
}
$mysqli_result->free_result(); //释放结果集
} else {
echo "error:".$mysqli->errno." : ".$mysqli->error;
}
$mysqli->close();
?>

  

方法二:循环获取(fetch_array、fetch_assoc、fetch_row)

<?php
$mysqli = new Mysqli();
$mysqli->connect("localhost","root","root","test");
if ( $mysqli->connect_errno ){
die( $mysqli->connect_error );
}
$mysqli->set_charset("utf8");
$sql = "select * from mysqli;";
$mysqli_result = $mysqli->query($sql);
if( $mysqli_result && $mysqli_result->num_rows>0 ){
while( $row = $mysqli_result->fetch_assoc() ){
print_r( $row );
}
$mysqli_result->free_result(); //释放结果集
} else {
echo "error:".$mysqli->errno." : ".$mysqli->error;
}
$mysqli->close();
?>

  

  

MySQLi面向对象实践--select的更多相关文章

  1. MySQLi面向对象实践--multi_query

    使用multi_query可以实现执行多条SQL语句,每一条SQL语句通过分号分隔. 需要注意的是: 多条用分号分隔的SQL语句中,只要有一条SQL语句执行失败,那么这一条SQL语句以及之后的SQL语 ...

  2. MySQLi面向对象实践--insert、update、delete

    执行insert <?php $mysqli = new Mysqli(); $mysqli->connect("localhost","root" ...

  3. Mysqli面向对象操作数据库

    Mysqli面向对象操作数据库 首先配置一下数据库: 接着用PHP中的Mysqli扩展库面向对象查询这个数据表. 操作分为以下几个步骤: 连接数据库 操作数据库 处理结果 关闭资源 <?php ...

  4. MySQL原生API、MySQLi面向过程、MySQLi面向对象、PDO操作MySQL

    [转载]http://www.cnblogs.com/52fhy/p/5352304.html 本文将举详细例子向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对 ...

  5. PHP中用mysqli面向对象打开连接关闭mysql数据库

    代码如下: <meta http-equiv="content-type" content="text/html" charset="utf-8 ...

  6. C++面向对象实践

    实践如下: class Person{ private: int age; ]; int hight; public: Person(int age, int hight, char* name); ...

  7. Golang的面向对象实践method

    最近在系统的学习go的语法,一切都弄好了之后准备弄个im项目出来玩.在这个过程中会把看到有趣的写法和语法啥的拿出来分析一下. 我一直以为go语言对面向对象没有支持,但是后面看到了类似类的概念,meth ...

  8. Mysql学习实践---SELECT INTO的替代方案

    从一个表复制数据,然后把数据插入到另一个新表中. 假设有一个已创建且有数据的orders表,要把orders表备份到还未创建的newOrders表里 SQL用法:SELECT * INTO newOr ...

  9. Javascript 面向对象实践

    踩到了坑,才能学到东西. 记录我在慢慢的转向模块化遇到的问题以及解决的思路. 1.采用立即执行函数,闭包的方式创建模块 html: <!DOCTYPE html> <html lan ...

随机推荐

  1. A - Dogs and Cages HDU - 6243(组合数学)

    题意:在1—n的数字,放入编号为1—n的框中,每个框只放一个数字,问数字与所放的框的编号不同的个数的期望值. 思路:在1—n中任选一个数字,设为k 那么 k 排到非k编号的框中的方案数为 n!-(n- ...

  2. CSS3系列教程:HSL 和HSL

    使用CSS3 HSL声明同样是用来设置颜色的.下一个呢? HSLA? 是的,这个和RGBA的效果是一样的. HSL声明使用色调Hue(H).饱和度Saturation(s)和亮度Lightness(L ...

  3. Linux下安装ElasticSearch 5 和配置外部访问

    https://www.cnblogs.com/hts-technology/p/8477291.html (一)ElasticSearch需要jdk1.8以上版本的支持,所以需要先安装jdk.lin ...

  4. Linux下rz/sz安装及使用方法

    新搞的云服务器用SecureCRT不支持上传和下载,没有找到rz命令.记录一下如何安装rz/sz命令的方法. 一.工具说明 在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz ...

  5. oracle全量、增量备份

    采用0221222增量备份策略,7天一个轮回 也就是周日0级备份,周1 2 4 5 6 采用2级增量备份,周3采用1级增量备份 打开控制文件自动备份 CONFIGURE CONTROLFILE AUT ...

  6. PAT A1073 Scientific Notation (20 分)——字符串转数字

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  7. Echo团队Alpha冲刺随笔 - 第六天

    项目冲刺情况 进展 开始着手服务器部署.小程序改了几个BUG,WEB端完成接近一半,后端主体功能大致完成 问题 服务器反向代理有点问题 心得 Learning By Doing! 今日会议内容 黄少勇 ...

  8. 错误:“Manifest merger failed with multiple errors, see logs”

    今天用Android Studio打开以前写个的项目后,出现如下错误:Manifest merger failed with multiple errors, see logs 现象是:  遇到这个问 ...

  9. 盖茨基金会:如何使用Python拯救生命

    每年全球都要花费数十亿美元来预防疾病,减少死亡,资助预防保健及治疗的各种研发项目,以及其他的健康方案.但资金毕竟是有限的,所以一些组织,比如全球卫生资金的主要捐助者比尔&梅林达·盖茨基金会(B ...

  10. php实现一个单链表

    单链表,节点只有一个指针域的链表.节点包括数据域和指针域. 因此用面向对象的思维,节点类的属性就有两个:一个data(表示存储的数据),一个指针next(链表中指向下一个节点). 链表一个很重要的特性 ...