对于许多web应用程序而言,数据库都是其核心所在。数据库几乎可以用来存储所有你想要检索和更新的任何信息
下面介绍两种数据库的访问方式:
①. MySQLi 访问MySQLi (面向对象)数据库,其中MYSQLi又分为 面向对象 和 面向过程两种形式
②. PDO访问MYSQL数据库
MySQLi 和 PDO那个更好???
MySQLi 和 PDO 各有优势
1.MySQLi只针对MySQL数据库,PDO支持12种数据库
2.两者都是面向对象, 但 MySQLi 还提供了 API 接口
3.两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
下面实例来展示一下它们的不同之处:
先创建数据库和表
定义数据库连接所需的参数
1.MySQLi (面向对象) 连接
2.MySQLi (面向过程) 连接
3.PDO连接
MySQLi和PDO在连接数据库上的不同
一.
①.MySQLi仅针对MYSQL数据库,所以在连接数据库时无需指定数据库类型(就一种数据库,哪还有什么类型可选,直接就默认为MySQL啦!)
②.PDO支持多种数据库的访问,所以在连接数据库时必须指定数据库类型,不然会报错(PDO可以访问那么多种数据库,你不指定鬼知道你要访问哪种类型的数据库呀!)
二.
①.MySQLi连接数据库时,可以指定数据库名,也可以不指定数据库名
②.PDO连接数据库时,必须指定数据库名,不然会报错
MySQLi面向对象和面向过程方式的异同
一.
我也刚开始学PHP访问数据库,所以我除了它们的连接上有明显区别之外,还没发现MySQLi面向对象 和 MySQLi面向过程的其他不同之处!!!
一直以来都以为是MySQLi面向对象专用的,是MySQLi面向过程专用的,没想到不是!
我想了解这其中的区别?希望有那位了解的大佬能告诉我,谢谢!
PDO执行sql语句所用方法解析
一.
①.当执行insert,update,delete等没有返回结果集的查询时,用PDO对象中的exec()方法来执行,执行成功后会返回受影响的行数
注意:exec()方法不能用于执行select查询,因为执行select查询会返回结果集
二.
①. 当执行返回结果集的select查询,则使用PDO对象中的query()方法来执行;
该方法成功执行后,会返回一个结果集,并且可以通过PDOStatement对象中的rowCount()方法来获取返回结果集的行数
②. MYSQLi访问数据库时,可以通过num_rows来获取返回结果集的行数
三.
①. execute()用于执行prepare预处理语句。
在执行prepare预处理语句时,可以使用bindParam()方法来绑定参数,并对参数进行编码,然后给execute()执行。
也可以在执行execute()方法绑定参数
②.1.MySQLi 执行prepare()预处理语句时,使用bind_param()方法来绑定参数
2.PDO执行prepare()预处理语句时,使用bindParam()方法来绑定数据库
3.直接在执行execute()方法时绑定参数
PDO获取结果集的方法
①. 获取结果集的的方法。fetch() ,fetchAll() , . . .
1.fetch()
fetch()用于获取结果集的下一行,一次检索一行,然后将获取的数据放到关联的数组中。
2.fetchAll()
fetchAll()方法用于获取结果集中的所有行,其返回值是一个包含结果集中所有数据的二进制数组。
②.结果集的返回方式
众所周知,我们平时获取数组的值时,一般都是通过数字索引或者是其字符串键来获取的
fetch()方法返回结果集的方式是由其参数控制,
参数为为PDO::FETCH_ASSOC,即通过列名作为数组索引来获取
参数为PDO::FETCH_NUM时,通过列号作为索引来获取
参数为PDO::FETCH_BOTH时,即可通过列名来获取也可通过列号来获取,不写参数时,默认为PDO::FETCH_BOTH
参数为PDO::FETCH_BOTH时
参数为PDO::FETCH_ASSOC
参数为PDO::FETCH_NUM
参考资料
http://www.runoob.com/php/php-mysql-connect.html
http://blog.okbase.net/phpchina/archive/731.html
https://blog.csdn.net/sck0088/article/details/45674193
https://www.cnblogs.com/dee0912/p/4093014.html
https://www.jb51.net/article/105797.htm
BC链 http://www.chinabic.com/?id=216 转载需授权!
网友评论