`

php中的pdo和mysqli的对比选择

    博客分类:
  • PHP
 
阅读更多

  在PHP中,如何选择PDO和mysqli呢?本文做个简单的比较

1)总的比较
  

  PDO MYSQLI
数据库支持 12种不同的数据库支持 支持MYSQL
API OOP OOP和过程
命名参数 支持 不支持
对象映射支持 支持 支持
preparestment 支持 不支持
支持存储过程 支持 支持
     

 

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,如下:
class User {
   public $id;
   public $first_name;
   public $last_name;
  
   public function info()
   {
      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();
4
0
分享到:
评论

相关推荐

    php中数据库连接方式pdo和mysqli对比分析

    在PHP中,数据库连接有多种方式,其中PDO(PHP Data Objects)和mysqli是两种常见的数据库扩展,它们都提供了与MySQL数据库交互的能力。然而,这两种方式在功能、性能和使用上存在一些差异。以下是对PDO和mysqli进行...

    php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例

    本文将深入探讨两种常见的MySQL数据库连接方式:mysqli和PDO(PHP Data Objects)扩展,并通过一个实际的代码示例来测试和对比它们之间的连接效率。 首先,mysqli扩展是MySQL Improved Extension的简称,专为PHP...

    php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例

    本文实例讲述了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率。分享给大家供大家参考,具体如下: <?php /** * 测试pdo和mysqli的执行效率 */ header(Content-type:text/html;charset=utf-8); //...

    Laravel开发-laravel-eloquent-mysqli

    - 对比测试 PDO 和 mysqli 在实际应用中的性能差异,选择更适合项目的解决方案。 总之,`laravel-eloquent-mysqli` 项目旨在帮助开发者了解和实践在 Laravel 中使用 mysqli 驱动进行数据库操作,这对于那些需要...

    PHP完全中文使用手册

    2. **PDO与mysqli扩展**:对比PDO和mysqli两种数据库操作方式,讲解其优点和使用场景。 **面向对象编程** 1. **类与对象**:阐述类的定义、属性和方法,以及对象的创建、克隆和销毁。 2. **继承与多态**:讲解...

    PHP、Python、Ruby的(数据库、文件)比较(原创)

    在数据库比较中,Python和Ruby的ORM能力让数据库操作更加抽象化,减少了直接SQL的编写,而PHP虽然可以通过PDO或MySQLi进行数据库操作,但在面向对象方面不如Python和Ruby直观。然而,PHP在Web开发中的普及度使其在...

    基于PHP的7x8Y中英文对照词典(php)源码.zip

    1. **数据库交互**:使用PHP的PDO或mysqli扩展与MySQL等数据库进行交互,存储和检索大量的中英文词汇及其解释。 2. **HTTP请求处理**:使用PHP的内置函数处理HTTP请求,如`$_GET`和`$_POST`,接收用户的查询参数。 ...

    php4 php5中文英文手册4版本

    2. 在深入学习时,可以对比PHP4和PHP5的差异,了解技术演进的过程,这对理解PHP的发展历程非常有帮助。 3. 阿鲁制作的函数手册对于实际编码工作很有价值,可以快速解决在编程过程中遇到的问题。 4. 利用CHM文件的...

    简单的登录注册php界面

    脚本接收到数据后,会与存储在数据库(如MySQL)中的用户信息进行对比验证。如果匹配成功,用户则被认为是已登录;否则,将显示错误消息。 在注册界面,PHP脚本处理新用户的注册请求。它接收并验证用户输入的资料,...

    php-7.2.2-nts-Win32-VC15-x64.zip

    4. `ext`:这个目录可能包含了PHP的扩展库,比如PDO、MySQLi等,这些扩展可以增加PHP的功能。 5. `snapshot.txt`:这可能是一个快照文件,记录了编译或打包时的特定信息,如编译选项等。 6. `license.txt`:包含了...

    php_manual_zh_PHP中文手册

    2. **扩展库**:PHP有许多内置的扩展库,如MySQLi和PDO用于数据库操作,GD库用于图像处理,curl库用于HTTP传输,XML解析库等。这些扩展提供了丰富的功能,使PHP可以轻松处理各种复杂的任务。 3. **配置选项**:手册...

    PHP实例开发源码-PHP搜索引擎蜘蛛跟踪器.zip

    如果涉及到数据库操作,那么可能使用了PDO或mysqli扩展来连接MySQL或其他类型的数据库,进行数据的读写。 总的来说,这个PHP实例可以帮助网站管理员更好地理解搜索引擎如何与他们的网站互动,从而优化网页结构、...

    php学习资料,非常详细。

    12. **数据库连接与操作**:讲解如何使用PHP连接MySQL数据库,执行SQL查询,以及PDO和mysqli扩展的对比。 13. **模板引擎**:简述模板引擎的作用,如Smarty,以及如何在PHP项目中使用它来分离业务逻辑和显示逻辑。 ...

    php电子教案(PPT)

    PHP常与数据库结合使用,本章涵盖了如何选择合适的数据库系统,如MySQL,以及连接、查询、插入、更新和删除数据的基本操作,利用mysqli或PDO扩展进行数据库操作的方法。 通过以上十个章节的学习,读者将全面了解PHP...

    jsp与php的比较与应用

    而在PHP中,通过PHP提供的数据库扩展,如mysqli或PDO,来实现与数据库的交互。每个语言提供的数据库接口各有特点,例如,PHP的mysqli扩展提供了面向对象和过程式两种方式来操作数据库,而JDBC则通常以面向对象的方式...

    PHP TO ASP.NET 2.0开发系列课程(6):深入挖掘PHP技术内幕

    - **数据库集成**:PHP与MySQL等关系型数据库配合良好,提供了多种数据库访问接口,如PDO和mysqli。 2. **ASP.NET 2.0的优势** - **.NET Framework**:ASP.NET 2.0基于.NET Framework,提供了一整套开发工具和...

    PHP网页密码访问php源码下载第2款

    常用的数据库系统有MySQL,可以使用PHP的PDO或mysqli扩展来连接和操作。 2. **登录页面(login.php)**:用户访问登录页面时,会看到一个表单,包含用户名和密码字段。表单提交后,PHP脚本将接收这些数据,验证它们...

    学好自己的PHP名词库

    资源通常通过特定的函数创建和管理,如MySQLi或PDO的数据库连接。 【类】:类是面向对象编程的基础,它是对象的蓝图,定义了对象的行为(方法)和属性。类不直接存在内存中,但通过创建类的实例(对象)可以在内存...

Global site tag (gtag.js) - Google Analytics