PHP学习第11课:php如何访问mysql服务

2025-10-26 02:39:51

1、特点:

(1)mysql拓展是早期版本;

(2)面向过程;

(3)非持续性链接,即每次链接都要打开一个新的进程;

(4)相对mysqli,PDO功能及安全性较差,且操作过程较繁琐。

除非系统是旧的版本(不想升级,说白了就是“怕”)不得不使用,否则应该果断废弃。

1、特点:

(1)mysqli是mysql improve,即mysql的加强版;

(2)永久链接;

(3)支持面向对象;

(4)其他:支持prepared语句,多语句执行,事务,嵌入式服务;

prepared是一个预处理机制,可以将整个命令向mysql服务器发送一次,以后只要参数变化,只需要分析命令的结构,可以减少数据的传输量,提高处理效率。

同样,能不用就不用。

PHP学习第11课:php如何访问mysql服务

1、举个例子,mysql拓展和mysqli拓展都是MYSQL的东西,有一天领导一声令下,“我们改成Oracle数据库吧”,你是不是有一种“很不爽”的感觉,因为你需要学习和安装php关于Oracle拓展的东西,虽然我们提倡“好好学习,天天向上”,但有的时候确实感觉比较麻烦。

这时候数据库抽象层PDO的作用就显现:统一不同数据库的访问接口,容易实现数据库迁移。

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

2、需要注意的是,windows的php版本中,PDO和主要的数据库驱动和php是一起发布的,修改起来很简单(将配置文件中php.ini中对应拓展的“注释”去掉即可),Linux环境的还需要再安装,由于我前期PHP的安装使用的是“yum”,

同样我通过yum来安装“PDO”和“pdo_mysql”:

yum install php70w-pdo

yum install php70w-pdo_mysql

PHP学习第11课:php如何访问mysql服务

1、连接管理:

(1)通过创建PDO基类的实例来实现(new PDO()),其构造函数接收的参数有库源,用户名,密码等。可以使用try{}catch{}来捕获异常。

(2)关闭连接的时候,可以赋值给该实例为NULL,否则程序在结束的时候关闭链接;

(3)可以通过附加参数,建立长连接:

$opt = array(PDO::ATTR_PRESISTENT =>TRUE);

$db = new PDO('mysql:host=127.0.0.1;dbname=hlongworld',$user,$pwd,$opt);

注意事项:

(1)建议使用try{}catcah{}来处理异常信息;

(2)PDO构造函数可接受的参数有4个;

(3)PDO包含好多预定义常量,具体可参见php官网。

PHP学习第11课:php如何访问mysql服务

2、错误处理模式:

(1)PDO::ERRMODE_SILENT:

默认模式,,可以使用errorCode()和errorInfo()对语句对象和数据库对象进行排错;

(2)PDO::ERRMODE_WARNING:

可以发出一条PHP的E_WARNING错误,$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);

(3)PDO::ERRMODE_EXCEPTION:

放大脚本产生错误的地方,更清晰的构造自己的错误处理,

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

3、执行sql:

(1)PDP::exec() : 执行update,insert,save等非结果集的操作,该方法返回受影响的行数;

(2)PDO::query():执行select查询操作(可以使用quote()过滤特殊字符,防止sql注入);

(3)PDO::prepare()和PDOStatement::execute():同一个查询需要执行多次,可提高查询效率。

以下我们重点讲解一下PDO预处理的内容。

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

1、我们在进行sql 操作是,服务器会分析,编译指令,使用预处理可以使sql语句之传输一次,以后在使用相同的查询的时候,只需要修改参数即可,相当于建立一种语句缓存,可以减少数据的传输量,减少开销。一言以蔽之“一次解析,多次执行”。

此外,还有一个好处,是在某种程度上避免了sql注入。因为我们的sql语句格式是一定的,变化的只是参数而已。

2、准备语句(PDO::prepare()):

sql语句中具体的列值使用两种“占位符”方式来实现:

(1)命名参数;

(2)问号参数;

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

PHP学习第11课:php如何访问mysql服务

3、绑定参数:

bindParam(1,2,3,4,5)一共有5个参数

(1)第一个参数由使用的占位符的类型有关,使用命名参数,则为命名的字符串,如果是?号参数,则为该参数在所有占位符中的位置(1,2,3。。。);

(2)第二个参数不能直接提供数据,只能提供变量;

(3)第三个参数表示数据类型;

(4)第四个参数表示数据长度;

(5)第五个参数表示驱动选项。

PHP学习第11课:php如何访问mysql服务

4、执行execute():

PHP学习第11课:php如何访问mysql服务

5、获取数据的方法:

(1)fetch();

(2)fetchAll();

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢