mysqli是专门访问MySQL数据库的,不能访问其它数据库。PDO可以访问多种的数据库,它把操作类合并在一起,做成一个数据访问抽象层,这个抽象层就是PDO,根据类操作对应的数据库。mysqli是一个类,PDO也是一个类,只不过PDO这个类功能更加强大。

PDO的功能

  1. 访问不同的数据库
  2. 自带事务功能。事务是指同时执行几条sql语句,但是其中1条语句出了错无法执行,那么所有的就都执行失败。
  3. 防止SQL注入攻击

PDO方式连接数据库

$pdo = new PDO('mysql:host=localhost;daname=db_demo','root','root');

执行SQL语句

PDO::query() //主要是用于有记录结果返回的操作,特别是SELECT操作
PDO::exec() //主要是针对没有结果集返回的操作,如INSERT、UPDATE等操作

获取结果集

PDOStatement::fetch() //获取一条记录
PDOStatement::fetchAll() //获取所有记录集

实例

$dsn = 'mysql:host=localhost;dbname=mysqli';
$pdo = new PDO($dsn,'root','root');
$pdo -> exec('set names utf8');
$sql = "SELECT * FROM users";
$stmt = $pdo -> query($sql);
$data = $stmt -> fetch(PDO::FETCH_ASSOC);
var_dump($data);
<?php
$dsn = 'mysql:host=localhost;dbname=mysqli';
$pdo = new PDO($dsn,'root','root');
$pdo -> exec('set names utf8');
$sql = "UPDATE users SET money=100 WHERE id=1";
$result = $pdo -> exec($sql);
var_dump($result);