0

0

PHP连接到mysql的方法-mysqli和PDO

不言

不言

发布时间:2018-04-09 17:11:43

|

3610人浏览过

|

来源于php中文网

原创

本篇文章给大家分享的内容是PHP连接到mysql的方法-mysqli和PDO,有需要的朋友可以参考一下

看书的时候提及了PDO扩展连接数据库,之前一直用用的mysql扩展和mysqli扩展,基本没用PDO,所以查了一些资料,特地记录转载,

PHP的MySQL扩展(优缺点)

设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口;

并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数 ;

据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。

PHP的mysqli扩展

mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性;

mysqli扩展在PHP 5及以后版本中包含;

mysqli扩展有一系列的优势,相对于mysql扩展的提升主要有:面向对象接口、 prepared语句支持、多语句执行支持、事务支持、增强的调试能力、嵌入式服务支持。

PHP数据对象(PDO)

PHP数据对象,是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以,使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器。

*********************************************************************************************************************************
PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,

提更了相对进阶的功能,就 Extension 而言,本身也增加了安全性。

而 PDO (PHP Data Object) 则是提供了一个 Abstraction Layer 来操作资料库


1.mysql与mysqli

mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.当然也更安全

mysql是非持继连接函数而mysqli是永远连接函数。也就是说

mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,使用new mysqli(‘localhost’, usenamer’, ‘password’, ‘databasename’);总是报

错,Fatal error: Class ‘mysqli’ not found in d:\…

mysqli类不是php自带的吗?

不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。

一:Mysqli.dll是一个允许以对象的方式或者过程操作数据库的,它的使用方式也很容易。


php连接到mysql数据库,我们一般最经典的方式就是使用mysql_connect(),具体代码如下:



[php] view plain copy


立即学习PHP免费学习笔记(深入)”;

mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());  
mysql_select_db($db_name);

 

    浏览器提示:本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。于是一通搜索,就有了接下来这篇文章的来源。

        这里的mysql是一个扩展的API,目的是为了简化php对mysql数据库的操作

mysqli

        mysqli是对mysql的一个增强版,出现在PHP 5 及以后的版本。它主要在一下几方面比mysql增强了:

        1、面向对象接口;2、prepared语句支持(译注:关于prepare请参阅mysql相关文档);3、多语句执行支持;4、事务支持;5、增强的调试能力;6、嵌入式服务支持



[php] view plain copy


";   
}  
?>


       上面的这段代码是一个完整的从连接到查询再到关闭数据库的一个例子。从该例子中可以看到,mysql_connect()和mysqli_connect()函数的用法上的小区别。




[php] view plain copy


//mysql  
mysql_connect("localhost","root","123456");  
mysql_select_db("userInfo");  
  
//mysqli  
mysqli_connect("localhost","root","123456","test");

    mysqli的连接数据库方法中除了使用上述(又称之为面向过程)之外,另外一种就是面向对象方式:



[php] view plain copy


立即学习PHP免费学习笔记(深入)”;

  1. query("set names utf8"); //设置数据库内数据的编码,相当于同时设置客户端、服务器端和脚本编码方式。  
        $sql  = "select * from userInfo";  
    $result = $mysqli->query($sql);  
    if($result){  
        if($result->num_rows>0){  
            while($row =$result->fetch_array()){//循环输出结果集中的记录  
                echo ($row[0])." ";  
                echo ($row[1])." ";  
                echo ($row[2])." ";  
                echo "
    "; } } }else{ echo "Sorry!"; } $result=NULL; $mysqli->close(); ?>

        这种用法中,使用mysqli之前要先new一个对象,然后使用该实例对象进行操作。


PDO

    PHP的一个数据对象,它提供了一个统一的连接数据库的API,它代表的是和数据库之间的一个连接,类似于java中的jdbc。

        简单举例如下:



[php] view plain copy


prepare('SELECT * FROM sometable');  
$stmt->execute();  
$pdo = null;//关闭连接  
?>

         由于从PHP 6 开始要完全使用PDO方式而非其他方式连接数据库,所以接下来详细研究一番:

1、为什么要用PDO,用PDO有什么好处?


    PDO(PHP数据对象),是PHP访问数据库的一个轻量级的统一接口。它提供了一个数据访问抽象层,这也就是说无论什么数据库都能用相同的方法进行查询或读取。需要注意的是PDO本身并不能实现任何的数据库功能,而是必须要使用一个具体数据库的PDO驱动进行访问数据库服务。

2、怎么用PDO?

     这里我们就以PHP的黄金搭档mysql作为例子看看:

     PDO_MYSQL:PDO_MYSQL是PDO接口能够完成连接mysql数据库的驱动(注:仅使用于mysql 3.x以上版本)。

    安装:打开php.ini文件,可以找到如下代码,这里可以看到mysql的驱动默认已经打开(前面没有用于注释的分号),如有连接其他数据库的需要,自行添加其他数据库的驱动程序(取出相应的项前面的分号,没有的添上)。





[php] view plain copy


立即学习PHP免费学习笔记(深入)”;

  1. //各数据库的PDO驱动  
    extension=php_pdo.dll   
    extension=php_pdo_firebird.dll //Firebird  
    extension=php_pdo_informix.dll //Informix  
    extension=php_pdo_mssql.dll    //sql server  
    extension=php_pdo_mysql.dll    //mysql  
    extension=php_pdo_oci.dll      //Oracle  
    extension=php_pdo_oci8.dll   
    extension=php_pdo_odbc.dll     //DB2  
    extension=php_pdo_pgsql.dll    //PostgreSQL  
    extension=php_pdo_sqlite.dll   //SQLite

连接:通过创建PDO基类的实例创建连接。

百家CMS微商城
百家CMS微商城

百家CMS微商城从诞生开始,就坚持着简单实用的原则,基于目前最流行的WEB2.0的架构(php+mysql),拥有成熟、稳定的微电商技术解决方案。基于完整的会员等级制度,完善的微商城购物流程,订单管理、优惠券、搜索、购物车等功能。采用跨平台机制,可同时对接微信公众号平台和支付宝服务窗,兼容微博、手机QQ等平台;丰富的支付方式、支持微信支付、支付宝支付、货到付款、余额支付、网银支付等。并且拥有完整的

下载



[php] view plain copy


//连接到数据库  
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);



[php] view plain copy


//处理连接错误  
try {  
    $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);  
    //查询  
    foreach($db->query('SELECT * from FOO') as $row) {  
        print_r($row);  
    }  
    $dbh = null;  
} catch (PDOException $e) {  
    print "Error!: " . $e->getMessage() . "
"; die(); }



[php] view plain copy


//关闭连接  
$db = null;

    PDO方式连接数据库mysql的实例:



[php] view plain copy


立即学习PHP免费学习笔记(深入)”;

  1. __toString()."
    "); } } publicfinalfunctionquery($sql){ try{ returnparent::query($this->setString($sql)); }catch(PDOException$e){ die("Error: ".$e->__toString()."
    "); } } privatefinalfunctionsetString($sql){ echo"处理查询"; return $sql; } } $db=new db(); $db->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER); foreach($db->query('select * from table_name') as $row){ print_r($row); } $db->exec('delete from table_name where id=11'); ?>

3、更多的PDO方法:



[php] view plain copy


PDO::beginTransaction — 启动一个事务  
PDO::commit — 提交一个事务  
PDO::__construct — 创建一个表示数据库连接的 PDO 实例  
PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE  
PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle  
PDO::exec — 执行一条 SQL 语句,并返回受影响的行数  
PDO::getAttribute — 取回一个数据库连接的属性  
PDO::getAvailableDrivers — 返回一个可用驱动的数组  
PDO::inTransaction — 检查是否在一个事务内  
PDO::lastInsertId — 返回最后插入行的ID或序列值  
PDO::prepare — Prepares a statement for execution and returns a statement object  
PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object  
PDO::quote — Quotes a string for use in a query.  
PDO::rollBack — 回滚一个事务  
PDO::setAttribute — 设置属性



[php] view plain copy


立即学习PHP免费学习笔记(深入)”;

PDOStatement::bindColumn — 绑定一列到一个 PHP 变量  
PDOStatement::bindParam — 绑定一个参数到指定的变量名  
PDOStatement::bindValue — 把一个值绑定到一个参数  
PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。  
PDOStatement::columnCount — 返回结果集中的列数  
PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令  
PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE  
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息  
PDOStatement::execute — 执行一条预处理语句  
PDOStatement::fetch — 从结果集中获取下一行  
PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组  
PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。  
PDOStatement::fetchObject — 获取下一行并作为一个对象返回。  
PDOStatement::getAttribute — 检索一个语句属性  
PDOStatement::getColumnMeta — 返回结果集中一列的元数据  
PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集  
PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数  
PDOStatement::setAttribute — 设置一个语句属性  
PDOStatement::setFetchMode — 为语句设置默认的获取模式。

  



[php] view plain copy


Exception::getMessage — 获取异常消息内容。  
Exception::getPrevious — 返回异常链中的前一个异常  
Exception::getCode — 获取异常代码  
Exception::getFile — 获取发生异常的程序文件名称  
Exception::getLine — 获取发生异常的代码在文件中的行号  
Exception::getTrace — 获取异常追踪信息  
Exception::getTraceAsString — 获取字符串类型的异常追踪信息  
Exception::toString — 将异常对象转换为字符串  
Exception::clone — 异常克隆

本文转自:https://blog.csdn.net/llittlepig/article/details/38272769

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

801

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

722

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

727

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

395

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

445

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

428

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16860

2023.08.03

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP数据库编程-MySQLi/PDO
PHP数据库编程-MySQLi/PDO

共11课时 | 1.0万人学习

MySQLi 扩展库视频教程
MySQLi 扩展库视频教程

共24课时 | 5.5万人学习

MySQLi面向对象编程极速入门
MySQLi面向对象编程极速入门

共10课时 | 7.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号