PDO的介绍及使用

本文目录

  • 一、PDO介绍
    • 1.1 链接数据库方式
    • 1.2 PDO介绍
      • 1.2.1 开启PDO扩展
    • 1.3 PDO核心类
    • 1.4 实例化PDO对象
      • 1.4.1 DSN
      • 1.4.2 实例化PDO
      • 1.4.3 注意事项
  • 二、使用PDO
    • 2.1 执行数据操作语句
      • 2.1.1、增加
      • 2.1.2、改
      • 2.1.3、删
      • 2.1.4、查:
        • 2.1.4.1、返回二维数组
          • 1、返回关联和索引数组
          • 2、返回索引数组
          • 3、返回关联数组
          • 4、返回对象数组
        • 2.1.4.2、返回一维数组
          • 1、默认返回关联和索引数组
          • 2、取索引数组
          • 3、通过循环获取所有数据
        • 2.1.4.3、匹配列
        • 2.1.4.4、匹配总行数、总列数
  • 三、遍历PDOStatement

一、PDO介绍

1.1 链接数据库方式

方法一:mysql扩展【这种方式php7已经淘汰】
方法二:mysqli扩展
方法三:PDO扩展

1.2 PDO介绍

PDO(PHP Data Object)扩展为PHP访问各种数据库提供了一个轻量级,一致性的接口。无论访问什么数据库,都可以通过一致性的接口去操作。

1.2.1 开启PDO扩展

开启PDO连接MySQL扩展

extension=php_pdo_mysql.dll

1.3 PDO核心类

1、PDO类:表示PHP和数据库之间的一个连接
2、PDOStatement类
第一:表示执行数据查询语句(select,show)后的相关结果集
第二:预处理对象
3、PDOException类:表示PDO的异常

1.4 实例化PDO对象

语法:

__construct($dsn, 用户名, 密码)

1.4.1 DSN

DSN:data source name,数据源名称,包含的是连接数据库的信息,格式如下:

$dsn=数据库类型:host=主机地址;port=端口号;dbname=数据库名称;charset=字符集

数据库类型:

MySQL数据库 => mysql;
oracle数据库 => oci;
SQL Server => sqlsrv;
具体驱动类型参见手册"PDO驱动"

1.4.2 实例化PDO

实例化PDO的过程就是连接数据库的过程
例:

 
$dsn='mysql:host=localhost;port=3306;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');
var_dump($pdo);

效果:
PDO的介绍及使用_第1张图片

1.4.3 注意事项

1、如果连接的是本地数据库,host可以省略。

 
$dsn='mysql:port=3306;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');
var_dump($pdo);

效果如上:
PDO的介绍及使用_第2张图片
2、如果默认端口号为3306的话,port也可以省略。

 
$dsn='mysql:dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');
var_dump($pdo);

效果如上:
PDO的介绍及使用_第3张图片
3、charset也省略,如果省略,使用的是默认字符编码。

 
$dsn='mysql:dbname=data;';
$pdo=new PDO($dsn, 'root', 'root');
var_dump($pdo);

效果如上:
PDO的介绍及使用_第4张图片
4、dbname也可以省略,如果省略就没有选择数据库:
例:

 
$dsn='mysql:';
$pdo=new PDO($dsn, 'root', 'root');
var_dump($pdo);

效果:
PDO的介绍及使用_第5张图片
5、host、port、dbname、charset不区分大小写,没有先后顺序。
例:

 
$dsn='mysql:port=3306;host=localhost;dbName=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');
var_dump($pdo);

效果:
PDO的介绍及使用_第6张图片

二、使用PDO

2.1 执行数据操作语句

方法:$pdo->exec($sql),执行数据增、删、改语句,执行成功返回受影响的记录数,如果SQL语句错误返回false。

2.1.1、增加

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

//  2、执行数据增加操作语句 
if ($pdo->exec("insert into shows values (null, 'kk', 'kkkkk', CURRENT_TIMESTAMP)"))
    echo '自动增长的编号是:'.$pdo->lastInsertId(),'
'
;

效果:
PDO的介绍及使用_第7张图片

2.1.2、改

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行修改
echo $pdo->exec('update shows set title="bb" where id=2');

效果:
PDO的介绍及使用_第8张图片
PDO的介绍及使用_第9张图片

2.1.3、删

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行删除
echo $pdo->exec('delete from shows where id=2');

效果:
PDO的介绍及使用_第10张图片
PDO的介绍及使用_第11张图片

2.1.4、查:

2.1.4.1、返回二维数组

1、返回关联和索引数组
 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.1 获取二维数组 // $rs = $stmt->fetchAll(PDO::FETCH_BOTH) // 默认返回关联和索引 $rs = $stmt->fetchAll(PDO::FETCH_BOTH); // 返回关联和索引数组 echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第12张图片


2、返回索引数组
 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.1 获取二维数组 // $rs = $stmt->fetchAll(PDO::FETCH_BOTH) // 默认返回关联和索引 $rs = $stmt->fetchAll(PDO::FETCH_NUM); // 返回索引数组 echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第13张图片


3、返回关联数组
 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.1 获取二维数组 // $rs = $stmt->fetchAll() // 默认返回关联和索引 $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); // 返回关联数组数组 echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第14张图片


4、返回对象数组
 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.1 获取二维数组 // $rs = $stmt->fetchAll() // 默认返回关联和索引 $rs = $stmt->fetchAll(PDO::FETCH_OBJ); // 返回对象数组 echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第15张图片


2.1.4.2、返回一维数组

1、默认返回关联和索引数组

例:

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.2 获取一维数组 $rs=$stmt->fetch(); // 默认返回关联和索引数组 echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第16张图片


2、取索引数组

例:

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.2 获取一维数组 $rs=$stmt->fetch(PDO::FETCH_NUM); // 默认返回索引数组,取一条,取完以后指针下移 echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第17张图片


3、通过循环获取所有数据

例:

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
var_dump($stmt);
echo '
'
; // 3、获取数据 // 3.2 获取一维数组 while($row=$stmt->fetch(PDO::FETCH_ASSOC)) { $rs[]=$row; } echo '
';
var_dump($rs);

效果:
PDO的介绍及使用_第18张图片


2.1.4.3、匹配列

例:

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
// 3、获取数据
// 3.3 匹配列
echo $stmt->fetchColumn(); // 默认获取当前行的第0列
// echo $stmt->fetchColumn(1); // 获取当前行第一列
echo '
';

效果:
PDO的介绍及使用_第19张图片


2.1.4.4、匹配总行数、总列数

例:

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');
// 3、获取数据
// 3.4 总行数、总列数
echo '总行数:'.$stmt->rowCount(),'
'
; echo '总列数:'.$stmt->columnCount(),'
'
;

效果:
PDO的介绍及使用_第20张图片


三、遍历PDOStatement

例:

 
// 1、实例化PDO
$dsn='mysql:port=3306;host=localhost;dbname=data;charset=utf8';
$pdo=new PDO($dsn, 'root', 'root');

// 2、执行查询
$stmt = $pdo->query('select * from shows');

// PDOStatement对象中是有迭代器的
foreach($stmt as $row) {
     
    echo $row['id'],'-',$row['title'],$row['content'],'-',$row['createTime'];
    echo '
'
; }

效果:
PDO的介绍及使用_第21张图片


在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

你可能感兴趣的:(PHP,MySQL,mysql,php)