1)总的比较

PDO

MySQLi

数据库支持

12种不同的数据库支持

支持MySQL

API

OOP

OOP + 过程

Connection

Easy

Easy

命名参数

支持

不支持

对象映射支持

支持

支持

预处理语句

(客户端)

支持

不支持

性能

支持存储过程

支持

支持

2 连接方式

先来看下两者连接数据库的方式:

//PDO

$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');//mysqli, 面向过程方式

$mysqli = mysqli_connect('localhost','username','password','database');//mysqli, 面向对象

$mysqli = new mysqli('localhost','username','password','database');

3 数据库支持

PDO支持多种数据库,但MYSQLI只支持MYSQL

4 命名参数name parameter

PDO的方式:

$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);$pdo->prepare('SELECT * FROM users

WHERE username = :username

AND email = :email

AND last_login > :last_login');

而MYSQLI则麻烦点,不支持这样,只能:

$query = $mysqli->prepare('SELECT * FROM users

WHERE username = ?

AND email = ?

AND last_login > ?');$query->bind_param('sss', 'test', $mail, time() - 3600);$query->execute();

这样的话,一个个对问号的顺序,也比较麻烦,不大方便。

5 ORM映射的支持

比如有个类user,如下:

classUser

{public $id;public $first_name;public $last_name;public functioninfo()

{return '#' . $this->id . ': ' . $this->first_name . ' ' . $this->last_name;

}

}$query = "SELECT id, first_name, last_name FROM users";//PDO

$result = $pdo->query($query);$result->setFetchMode(PDO::FETCH_CLASS, 'User');while ($user = $result->fetch())

{echo $user->info() . "\n";

}

MYSQLI用面向过程的方式:

if ($result = mysqli_query($mysqli, $query)) {while ($user = mysqli_fetch_object($result, 'User')) {echo $user->info()."\n";

}

}

MYSQLI采用面向过程的方式:

//MySQLi, object oriented way

if ($result = $mysqli->query($query)) {while ($user = $result->fetch_object('User')) {echo $user->info()."\n";

}

}

6 防止SQL注入方面:

PDO 手工设置

$username = PDO::quote($_GET['username']);$pdo->query("SELECT * FROM users WHERE username = $username");

使用mysqli

$username = mysqli_real_escape_string($_GET['username']);$mysqli->query("SELECT * FROM users WHERE username = '$username'");

7 preparestament

PDO方式:

$pdo->prepare('SELECT * FROM users WHERE username = :username');$pdo->execute(array(':username' => $_GET['username']));

MYSQLI:

$query = $mysqli->prepare('SELECT * FROM users WHERE username = ?');$query->bind_param('s', $_GET['username']);$query->execute();

php pdo mysql哪个好_php pdo和mysqli对比选择相关推荐

  1. pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法

    当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_ ...

  2. pdo mysql 绑定查询_php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 php mysql PDO 查询操作的实例详解 这篇文章主要介绍了php mysql PDO 查询操作的实例详解的相关资料,希望通过本文能帮助到大家,需 ...

  3. pdo mysql连接类_PHP PDO-MYSQL:如何在不同类之间使用数据库连接

    小编典典 解决方案1 替换class account_info {为class account_info extends connection { 更换 $con = new connection() ...

  4. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例

    本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...

  5. php mysql 大量读取_PHP使用PDO从mysql读取大量数据处理详解

    前言 本文主要介绍了关于PHP利用PDO从mysql读取大量数据处理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 环境 mysql: 5.6.34 php: 5.6 n ...

  6. php pdo mysql 预处理_PHP PDO mysql 处理类(prepare 预处理)

    使用预处理,动态处理需要操作的字段和值.先使用PDO来动态绑定参数.PDOModel: /** * Description of PDO * * @author Administrator */ cl ...

  7. mysql敤 罚_php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В_PHP教程

    php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В PDO常用方法: PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作. PDO::e ...

  8. mysql敤 罚_php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В

    php中mysql连接方式PDO使用详解,pdo浣跨敤璇﹁В PDO常用方法: PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作. PDO::e ...

  9. pdo插入mysql数据出错_php中通过pdo插入数据时,sql语句错误?

    再次先谢谢各位大佬!! 接下来直接看代码: include 'mysql_ini.php'; $sql_select = "select * from word where word = ? ...

最新文章

  1. 画出漂亮的神经网络图!神经网络可视化工具集锦搜集
  2. Mysql 中,WEEK 与YEARWEEK函数的参数问题
  3. YUV图像实时去雾算法的优化与改进
  4. zz让你成功的九个心理定律
  5. 9、Power Map—应用拾取坐标系统确定经纬度
  6. ipaddr库计算区间IP及CIDR的IP段
  7. C#中使用SoundPlayer播放音频文件(wav文件)
  8. 江苏广电总台面试java_江苏广电面试 江苏广电25位面试官坐镇终面 - 86资讯网
  9. step5 . day4 网络编程 基于UDP协议的网络编程流程及API
  10. C#和C++结构体Socket通信
  11. 《Windows脚本应用详解》已经出版
  12. PHP高级教程-高级过滤器
  13. android学习之路1:前车之鉴之开发环境搭建
  14. Java多组输入实现 C++多组输入实现
  15. java 成绩管理系统 报告_Java学生成绩管理系统实验报告
  16. Ant Design 遭删库!
  17. unity打开excel表格_unity创建编辑读取EXCEL文件表格数据游戏插件工具Uni-Excel 1.0
  18. RxJava 沉思录(一):你认为 RxJava 真的好用吗?
  19. 解决训练时显存不断增大问题
  20. WEB介绍(beego)

热门文章

  1. html5 js保存token,vue生成token并保存到本地存储中
  2. Android开发之APP唤醒小程序,打开小程序,调起小程序以及传参数的实现方法(附加源码)
  3. linux 查看历史打印,2019-02-01 Linux查看用户/历史命令
  4. 360获公安部“优秀技术支持单位”等七项荣誉
  5. iUAP云运维平台v3.0全面支持基于K8s的微服务架构
  6. 路由有类查找和无类查找方式
  7. 雅虎正开发聊天机器人挑战对手 不过似乎很难成功
  8. 通过 pxe(网络安装)完成centos 系统的网络安装
  9. 会话的清除与建立网络磁盘
  10. Oracle SQL Parsing Flow Diagram(SQL 解析流程图)