Mysqli基础知识
相信原来在开始学习php的时候,很多人使用的数据库首选MySQL,连接数据库的扩展首选mysql扩展,但随着php版本的提高,mysql扩展正逐渐被mysqli和PDO所取代。正如使用mysql函数时给出的deprecated: The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead。学习mysqli扩展势在必行了。
相对于mysql扩展,mysqli扩展支持面向对象和面向过程两种方式,支持预处理,支持事务处理,而且速度比mysql速度更快。本篇将主要介绍mysqli的面向对象的基本简单操作。
mysqli安装配置
mysqli的安装配置和其他配置一样,首先要确认你的ext文件夹下存在php_mysqli.dll文件(一般而言是存在的),并且在php.ini文件中去掉“extension=php_mysqli.dll”这一行前的";",并且确定配置文件中extension_dir='ext目录所在的位置。重新启动服务器后,便可以使用mysqli扩展啦~
如何验证mysqli扩展已经开启了呢?
其实最直接的是使用mysqli扩展的函数看看能不能用,例如通过能否连接数据库判断扩展已经安装完成。连接成功,不必说,自然是装好了,连接不成功,也不要轻易认为没有装好,我们还有后招,利用phpinfo()函数,我们可以明确知道mysqli是否可用。
当然可以通过extension_loaded('mysqli') 来判断是否装载mysqli扩展,甚至可以通过get_loaded_extensions()获得到底装载了哪些扩展。
面向对象mysqli的使用
对于使用过mysql扩展的开发者,mysqli无论是面向对象还是面向过程的 方式都是非常容易理解的,有种似曾相识的感觉。具体的属性方法请参照php官方手册,http://php.net/manual/zh/mysqli.summary.php,下面我我通过一段代码示例mysqli的使用过程。
本例中操作做的表为test表,有id,title两个字段。

<?php
//配置文件完成相关配置
define("HOST", "localhost");
define("USER", 'root');
define("PWD", '');
define("DB", 'yii'); //建立连接,生成mysqli实例对象。
$mysqli=new Mysqli(HOST,USER,PWD,DB); if ($mysqli->connect_errno) {
"Connect Error:".$mysqli->connect_error;
}
//设置默认的字符集
$mysqli->set_charset('utf8');
$sql="select * from test";
//生成mysql_result对象
$result=$mysqli->query($sql); //返回二维关联数组,参数同理可以设定为MYSQLI_NUM返回索引数组,或者MYSQLI_BOTH二者兼有。
$rows=$result->fetch_all(MYSQLI_ASSOC); //将结果指针调整到任意行
$result->data_seek(2);
$row=$result->fetch_row();
//$row=$result->fetch_array();
//$row=$result->fetch_assoc();
//$row=$result->fetch_object(); //释放结果集
$result->free();
//$result->free_result();
//$result->close(); //关闭连接
$mysqli->close();
以上代码仅仅是简单地展现了如何 利用mysqli进行查询,未对查询结果集进行遍历,如何取出数组中的数据应该不是难事。
需要注意的是$mysqli->query()执行的sql语句,成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回 TRUE,执行失败则都返回false。
在进行INSERT,UPDATE,DELETE操作时可以调用$mysqli->affected_rows获得受影响记录条数
$mysqli->affected_rows 返回值 返回-1表明sql语句出现问题,0表示没有受影响的记录,其他数值则是受影响条数。
执行多条SQL语句,预处理,以及事务处理也是mysqli的重要内容,我会在后来的随笔中写到。
p个s:第一次写技术博客好紧张有木有!很多措辞不当的地方还是希望大家多多提意见~
Mysqli基础知识的更多相关文章
- MySQL_基础知识
-----基础知识 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 2.什么是关系型数据库.主键,外键,索引分别是什么? 关系型数据 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- C# List与DataTable的相互转化
List与Data的转化比较简单,网上也很多.但是大多都有一个Bug:当实体类有可空类型的属性时,转化会出异常(DATASET不支持System.Nullable异常) 下面的方法可以避免出现这个问题 ...
- Java API 快速速查宝典
Java API 快速速查宝典 作者:明日科技,陈丹丹,李银龙,王国辉 著 出版社:人民邮电出版社 出版时间:2012年5月 Java编程的最基本要素是方法.属性和事件,掌握这些要素,就掌握了解决实际 ...
- POJ 3225 Help with Intervals --线段树区间操作
题意:给你一些区间操作,让你输出最后得出的区间. 解法:区间操作的经典题,借鉴了网上的倍增算法,每次将区间乘以2,然后根据区间开闭情况做微调,这样可以有效处理开闭区间问题. 线段树维护两个值: cov ...
- 保存带有emoji的文本报错解决方案
今天偶然遇到一个错误,就是保存文本的时候带有了emoji表情,报错了 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A\ ...
- SVN版本回退
[SVN版本回退] 在Windows里,先打开Log面板,根据想要回退的内容,然后选择revert to this revision或者revert changes from this revisio ...
- getBoundingClientRect详解
getBoundingClientRect获取的left和top始终是该元素相对于页面原点坐标的位置,当它大于原点坐标则为正数,等于原点坐标为零,小于为负数.
- 在Function对象上扩展method方法
;(function() { /** * 在Function对象上扩展method方法 * @param {String} name 扩展的方法名称 * @param {Function} callb ...
- R 分类进行数值处理
主要Mark一下R程序中,分类进行数值计算的情况. 1.aggregate函数 有数据框case,列名分别a,b,c,d,e,f (1)根据一列对另一列求和:根据a,对d求和 sum1 <- a ...
- Linux下Tomcat的启动、关闭、杀死进程
打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.ou ...
- QT QString类
字符串有如下几个操作符 QString提供了一个二元的"+"操作符用于组合两个字符串,并提供了一个"+="操作符用于将一个字符串追加到另一个字符串的末尾,例如: ...