在php中,想要对MySQL进行操作,可使用PDO扩展,PDO(PHP Data Object, PHP数据对象)由MySQL官方提供,通过PDO不仅可以操作MySQL数据库,同样可以操作Oracle、SQL server等其他数据库。
PDO基于面向对象思想进行封装,使用PDO与MySQL数据库建立链接,需要创建PDO的实例。

一、创建PDO实例

  1. $conn = new PDO("数据库类型:host=主机地址;dbname=库名""数据库用户名""数据库密码");
<?php
header("content-type:text/html;charset=utf-8");

$url = "mysql:host=127.0.0.1;dbname=cai";
$user = "root";
$pwd = "123";
$conn = new PDO($url,$user,$pwd);

var_dump($conn);

$conn = NULL;
  1. 创建PDO实例:

$conn = new PDO($url,$user,$pwd);
实例化 PDO 对象,也就是创建 PDO 实例,同时 PDO 也会连接上 MySQL 数据库。
$conn:代表 PDO 对象,同时也代表了 MySQL 数据库的连接对象。
$url:代表 PDO 连接的数据源。
$user:MySQL 数据库用户名(root 是 MySQL 数据库的超级管理员帐号)。
$pwd:MySQL 数据库密码

  1. 指定数据源

$url = “mysql:host=127.0.0.1;dbname=cai”;
指定 PDO 连接的数据源。
mysql:代表 PDO 连接的数据库的类型。
127.0.0.1:代表数据库的主机地址。如果是本地主机,也可写成 localhost。
cai:代表将要访问的库名。

  1. 关闭连接

$conn = NULL;
将 PDO 对象设置为 NULL,用于关闭 PDO 与 MySQL 数据库的连接。
注:此句代码可以省略。因为 PHP 有垃圾回收机制,在变量使用结束后,系统将自动销毁。

二、执行SQL语句

1、exec()方法

int PDO::exec(string sql);

exec()方法可以执行一条SQL语句,并返回受影响的行数。该方法通常用于执行insert、update、deseret等语句。

<?php
header("content-type:text/html;charset=utf-8");

$url = "mysql:host=127.0.0.1;dbname=cai";
$user = "root";
$pwd = "123";

$conn = new PDO($url,$user,$pwd);
$row = $conn->exec("insert into user(username,password)values('张三','123456')");

echo "受影响行数:{$row}";

2、query()方法

语法示例:

在PHP中,想要对MySQL执行查询操作,可以通过PDO的query()方法来实现。
query()方法不同于exec()方法,它通常用于执行select语句,返回值是PSOStatement实例。

PDOStatement PDO::query(String sql)
<?php
header("content-type:text/html;charset=utf-8");

$url = "mysql:host=127.0.0.1;dbname=cai";
$user = "root";
$pwd = "123";

$conn = new PDO($url,$user,$pwd);
$st = $conn->query("select * from user");

print_r($st);

获取查询结果:

获取结果集中的一条记录

array PDOStatement::fetch([int $fetch_style [,int $cursor_orientation[,int $cursor_offset]]])

通过PDOStatement实例,调用feach()方法,获得查询结果集中的一条记录。

fetchstyle 参数决定 POD 如何返回行,此值必须是 PDO::FETCH* 系列常量中的一个,缺省为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。

$res = $st->fetch(PDO::FETCH_ASSOC);

三、PDO获得多条记录

获取结果集中的一条记录

PDOStatement::fetchAll(int $fetch_style=?, mixed $fetch_argument = ?, array $ctor_args = array()): array

通过 PDOStatement 实例,调用 fetchAll() 方法,获得查询结果集中的多条记录。

fetch_style 参数决定 POD 如何返回行,此值必须是 PDO::FETCH_* 系列常量中的一个,缺省为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。

  • PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组(常用)
  • PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组
$res = $st->fetchAll(PDO::FETCH_ASSOC);