PDO 操作数据库
1.创建数据表
drop table if exists 'category';
create table 'category' (
'id' int(10) unsigned not null AUTO_INCREMENT,
'name' varchar(16) COLLATE utf8mb4_unicode_ci not null,
'cate_order' int(10) not null,
'description' varchar(100) COLLATE utf8mb4_unicode_ci not null,
'parent_id' int(10) not null,
'created_at' timestamp null DEFAULT null,
'updated_at' timestamp null DEFAULT null,
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
2.连接数据库
2.1数据库配置文件
<?php
namespace pdo_edu;
return [
'type' => $type ?? 'mysql',
'host' => $host ?? 'localhost',
'chartset' => $charset ?? 'utf8',
'dbname' => $dbname ?? 'phpedu',
'username' => $username ?? 'root',
'password' => $pasword ?? 'root',
'port' => $port ?? '3306'
];
2.1使用pdo链接数据
<?php
namespace pdo_edu;
use Exception;
use PDO;
$config = require 'config/database.php';
extract($config);
//创建DSN
$dsn = sprintf("%s:host=%s;dbname=%s", $type, $host, $dbname);
// var_dump($dsn);
try {
//链接数据库
$pdo = new PDO($dsn, $username, $password);
$pdo->query("set names utf8");
} catch (Exception $e) {
die($e->getMessage());
}
3.使用PDO实现对数据库的读操作
<?php
namespace select;
use PDO;
header("Content-Type: text/html; charset=UTF-8");
//1.链接数据库
require 'connect.php';
//2.操作数据表
$sql = "select * from `category` where `parent_id` = ?";
// 预处理对象$stmt:为了防止 SQL注入
$stmt = $pdo->prepare($sql);
$stmt->execute([1]);
// $categories = $stmt->fetchAll(PDO::FETCH_ASSOC);
// var_dump($categories);
while ($category = $stmt->fetch(PDO::FETCH_ASSOC)) {
printf("<pre>%s</pre>", print_r($category, true));
}
//3.关闭链接
unset($pdo);
4.使用PDO实现对数据的增操作
<?php
namespace insert;
use PDO;
//1.链接数据库
require 'connect.php';
//2.操作数据表
$sql = "insert `category` set `name`=?, `cate_order`=?, `description`=?, `parent_id`=?, `created_at`=?, `updated_at`=? ";
// echo $sql;
// exit;
$stmt = $pdo->prepare($sql);
$data = [
'网易新闻', '6', '网易新闻是网易倾力打造的精品应用,已然成为国内第一新闻客户端,因体验最流畅、新闻最快速、评论最犀利而备受推崇',
'1', '2020-05-08 12:00:00', '2020-05-08 12:18:12'
];
$stmt->execute($data);
//判断是否执行成功
if ($stmt->rowCount() === 1) {
echo '新增成功,新增的主键是' . $pdo->lastInsertId();
} else {
echo '新增失败';
print_r($stmt->errorInfo());
}
//3.关闭链接
unset($pdo);
5.使用PDO实现对数据的改操作
<?php
namespace update;
use PDO;
//1.链接数据库
require 'connect.php';
//2.数据库操作
$sql = "update `category` set `description`=? where `id` =? ";
$stmt = $pdo->prepare($sql);
$data = ['网易新闻融合资讯平台及原创策划为一体,自1998年成立起始终保持市场领先地位。', 12];
$stmt->execute($data);
//判断是否执行成功
if ($stmt->rowCount() === 1) {
echo '更新成功';
} else {
echo '更新失败';
print_r($pdo->errorInfo());
}
//3.关闭链接
unset($pdo);
6.使用PDO实现对数据库的删操作
<?php
namespace delete;
use PDO;
//1.建立链接
require "connect.php";
//2.数据库操作
$sql = "delete from `category` where `id`=?";
// $sql = "DELETE FROM `staffs` WHERE `id`=:id";
// echo $sql;
$stmt = $pdo->prepare($sql);
$stmt->execute(['13']);
if ($stmt->rowCount() === 1) {
echo '删除成功';
} else {
echo '删除失败';
print_r($pdo->errorInfo());
}
//3.关闭链接
unset($pdo);
总结:使用PDO操作数据库主要有3个步骤,第一步是链接数据库,由于可能经常需要使用到这个操作,可以把它单独拿出来写在一个文件中,后面需要连接数据库时引入这个文件就行;第二歩对数据库进行操作,主要先写SQL语句然后使用prepare方法对SQL语句进行预处理最后执行execute方法传入相应的参数;第三歩是可选的,关闭连接,直接用unset方法把pdo对象置空就行。