php_mysqli 与 pdo 性能对比,php中使用mysql、mysqli、pdo的比较

普通的mysql方法在安全性方面应该不是很好,每次需要考虑sql注入的问题,而且速度不是很赞。而mysqli是在mysql基础上进行改进的一次,较好的解决了sql注入问题。

pdo则是最新的数据库抽象方法,pdo高度抽象了数据库操作,项目使用pdo方法可以方便的进行迁移,在不同的数据库之间进行迁移。

在高负载的情况下.PDO开启长连接能够得到一个相对稳定的负载“值”。但是效率却不是最高的。

mysql最快。mysqli其次。只是mysql和mysqli在高并发、系统高负载的时候。其所承担的负载也是很可观的。PDO则不会。

书写风格

面向对象

抛异常

php_mysqli

函数名用下划线,比如fetch_all

可以oop,也可以opp

否,只能false

pdo

函数名用驼峰,比如fetchAll

oop

可以throw,也可false或false加warnnig

php_pgsql

函数名用下划线,比如pg_fetch_all

opp

否,只能false

其次pdo是面向对象的,当有错误的时候可以抛出异常,而且可以自定义异常抛出。

php_mysqli 与 pdo 性能对比:(查找自互联网)

PHP的mysqli扩展

PDO (使用PDO MySQL驱动和MySQL Native驱动)

PHP的mysql扩展

引入的PHP版本

5.0

5.0

3.0之前

PHP5.x是否包含

MySQL开发状态

活跃

在PHP5.3中活跃

仅维护

在MySQL新项目中的建议使用程度

建议 - 首选

建议

不建议

API的字符集支持

服务端prepare语句的支持情况

客户端prepare语句的支持情况

存储过程支持情况

多语句执行支持情况

大多数

是否支持所有MySQL4.1以上功能

大多数

PDO使用说明:

PDO::prepare()

官方文档:http://www.php.net/manual/zh/pdo.prepare.php

适用:多次查询使用相同的条件字段和结果字段。这时候比PDO::query()性能高。

转义:value无需手动转义,PDO会自动进行转义,不用担心SQL注入。(开启query log可以看到语句的确已转义)

缺点:由于标识符(列名表名)是手写的SQL,要自己加引用符反勾号`。

PDO::prepare()模拟处理的时候不会通过数据库,所以不知道语法错误,不会返回错误或抛异常。什么时候是真处理,什么时候是模拟处理, 官方手册中未找到说明。输入任意的SQL都不出错……所以目前不要指望prepare返回错误,PDOStatement::execute()时才会返 回错误。http://www.php.net/manual/zh/pdo.prepare.php

补充:这里给出mysql、mysqli、pdo的基本用法

//mysql方法

$dbname='db_pet';

$username='root';

$password='playboy';

mysql_connect('localhost',$username,$password);

mysql_select_db($dbname);

$res=mysql_query('select password from user where username="home"');

$row=mysql_fetch_row($res);

echo $row[0] ;

echo '


';

//mysqli方法

$con=new MySQLi('localhost',$username,$password,$dbname);

$res2=$con->query('select email from user where username ="home"');

$row2=$res2->fetch_array();

echo $row2[0];

echo '


';

//pdo方法

try{

$pdo=new PDO('mysql:host=localhost;dbname=db_pet','root','playboy');

$sql='select email from user where username=?';

$stmt=$pdo->prepare($sql);

$stmt->execute(array('home'));

echo $stmt->rowCount();

}catch(PDOException $e){

echo $e->getMessage();

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值