数据库入门及PDO的增删改
1.数据库介绍
- MySQL是一款开源免费的关系型数据库软件,适合中小型项目
- 增删改查(CURD)是数据库的招牌动作
- 可视化数据库管理软件有Navicat,PHPMyadmin,adminer等
2.PDO介绍
- PDO是PHP的一个拓展,是数据库抽象层,适合绝大多数数据库
- 简单来说,PDO操作数据库的代码是一样的,而不用关心是什么数据库,只要更改DSN即可
- 需要在php.ini中开启PDO拓展
- 早期还有mysql拓展,mysqli拓展,仅仅支持mysql数据库而已
3.DDL创建数据库,数据表和数据库配置连接文件
CREATE DATABASE IF NOT EXISTS `test` CHARSET UTF8 COLLATE UTF8_GENERAL_CI;
CREATE TABLE IF NOT EXISTS `customers`
(
`cust_id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
`cust_name` CHAR(50) NOT NULL,
`cust_sex` CHAR(1) NOT NULL DEFAULT 0,
`cust_address` CHAR(50),
`cust_contact` CHAR(50)
) ENGINE INNODB
CHARSET UTF8
COLLATE UTF8_GENERAL_CI;
<?php
namespace config;
return [
//数据库类型
'type' => $type ?? 'mysql',//相当于isset($type)?$type:'localhost'
//主机
'host' => $host ?? 'localhost',
//默认数据库
'dbname' => $dbname ?? 'php11',
//用户名
'username' => $username ?? 'root',
//密码
'password' => $password ?? 'root',
//端口
'port' => $port ?? 3306,
//默认字符集
'charset' => $charset ?? 'UTF8'
];
<?php
namespace connect;
use PDO;
use Exception;
//引入数据库配置文件
$config = require_once './config/config.php';
//获取数据库配置
$type = $config['type'];
$host = $config['host'];
$dbname = $config['dbname'];
$username = $config['username'];
$password = $config['password'];
//数据源
$dsn = $type . ':' . 'host=' . $host . ';dbname=' . $dbname;
//连接数据库
try {
$pdo = new PDO($dsn, $username, $password);
echo '数据库连接成功<br>';
} catch (Exception $e) {
echo $e->getMessage();
}
4.PDO增加数据
<?php
namespace delete;
//引入数据库连接文件
require_once './connect.php';
//SQL
$sql = "INSERT INTO `customers` VALUES (null, ?, ?, ?, ?);";
//预处理语句
$stmt = $pdo->prepare($sql);
//数据
$data = ['张三', 0, '黑龙江省哈尔滨市', 18888888888];
//参数绑定(按位置进行依次绑定),并执行SQL
$stmt->execute($data);
//是否执行成功
if ($stmt->rowCount() > 0) {
echo '数据新增成功,最后一条插入的ID为:' . $pdo->lastInsertId();
} else {
echo '数据新增失败,错误信息为:';
print_r($stmt->errorInfo());
}
5.PDO删除数据
<?php
namespace delete;
//引入数据库连接文件
require_once './connect.php';
//SQL
$sql = "DELETE FROM `customers` WHERE `cust_id` = :cust_id;";
//预处理语句
$stmt = $pdo->prepare($sql);
//数据
$data = [':cust_id'=>1];
//参数绑定(按名称进行绑定),并执行SQL
$stmt->execute($data);
//是否执行成功
if ($stmt->rowCount() > 0) {
echo '数据删除成功';
} else {
echo '数据删除失败,错误信息为:';
print_r($stmt->errorInfo());
}
6.PDO更新数据
<?php
namespace delete;
//引入数据库连接文件
require_once './connect.php';
//SQL
$sql = "UPDATE `customers` SET `cust_address` = :cust_address WHERE `cust_id` = :cust_id;";
//预处理语句
$stmt = $pdo->prepare($sql);
//数据
$data = [
':cust_address' => '北京市',
':cust_id' => 6
];
//参数绑定(按名称进行绑定),并执行SQL
$stmt->execute($data);
//是否执行成功
if ($stmt->rowCount() > 0) {
echo '数据更新成功';
} else {
echo '数据更新失败,错误信息为:';
print_r($stmt->errorInfo());
}
7.总结
- PDO是PHP操纵数据库的重要拓展,必须学会
- 相比较其他PHP操作数据库的拓展更加有发展
- 无论是原生开发,或者框架开发都是PDO,框架底层为PDO