PDO CURD操作
1、连接数据库:
$pdo = new PDO($dsn, $username, $password);
;
- DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=… ;port= …
$dsn = 'mysql:host=localhost;dbname=phpedu';
2、插入语句:
$sql = 'INSERT 表名 SET name=?, age=?,.... ';
3、查询语句:$sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 ';
4、更新语句:$sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
5、删除语句:$sql = "DELETE FROM 表名 WHERE 删除条件"
连接数据库
<?php
// PDO 连接数据库
use Exception;
use PDO;
$dsn = 'mysql:host=localhost;dbname=phpedu';
$username = 'root';
$password = 'root';
try {
// 连接数据库
$pdo = new PDO($dsn, $username, $password);
// var_dump($pdo);
} catch (Exception $e) {
die($e->getMessage());
}
一、代码演示插入:
<?php
// 插入数据
// 1、连接数据库
require 'connect.php';
// 2. 操作数据表(CURD)
// 插入语句: $sql = 'INSERT 表名 SET name=?, age=?,.... ';
/*
插入多条:
INSERT INTO `staffs` (`id`, `msnv`, `name`, `hiredate`, `donvi`, `congviec`, `luongtong`, `luongthuc`)
VALUES
(`id`, `msnv`, `name`, `hiredate`, `donvi`, `congviec`, `luongtong`, `luongthuc`)
...
...
*/
$sql = "INSERT `staffs` SET `msnv` = ?, `name` = ?, `hiredate` = ?, `donvi` = ?, `congviec` = ?, `luongtong` = ?, `luongthuc` = ?";
$stmt = $pdo->prepare($sql);
$data = ['TH041200', '阮文局 NGUYỄN VĂN CUỘC', 1439395200, '三分厂络筒运转甲班', '络筒挡车工', 13810926, 13153181];
$stmt->execute($data);
// 判断是否执行成功
// $stmt->rowCount(): 返回写操作产生的受影响的记录数量
if ($stmt->rowCount() >= 1) {
echo '新增成功, 新增记录的主键是: ' . $pdo->lastInsertId();
} else {
echo '新增失败';
print_r($stmt->errorInfo());
}
// 3. 关闭连接[可选]
unset($pdo);
演示效果:
二、代码演示查询:
<?php
// 数据表查询: 多条查询
use PDO;
// 1. 连接数据库
require 'connect.php';
// 2. 操作数据表(CURD)
// 查询语句: $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
$sql = 'SELECT * FROM `staffs`';
// 预处理对象$stmt:为了防止 SQL注入
$stmt = $pdo->prepare($sql);
// 预处理对象$stmt , 就是SQL语句对象
// 使用预处理对象调用 execute()执行这条sql语句
$stmt->execute();
$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
// print_r($staffs);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>员工工资明细</title>
<style>
table {border-collapse: collapse;border:1px solid black;text-align: center;}
th {border:1px solid black;padding: 5px;}
td {border:1px solid black;padding: 5px;}
tr:first-of-type {background-color:#eee;color: coral;}
</style>
</head>
<body>
<h4>员工工资明细</h4>
<table>
<tr>
<th>STT</th>
<th>工号</th>
<th>姓名</th>
<th>入职日期</th>
<th>部门</th>
<th>岗位</th>
<th>应发</th>
<th>实领</th>
</tr>
<?php foreach ($staffs as $staff) : ?>
<tr>
<td><?php echo $staff['id']; ?></td>
<td><?php echo $staff['msnv']; ?></td>
<td><?php echo $staff['name']; ?></td>
<td><?php echo date('Y/m/d', $staff['hiredate']); ?></td>
<td><?php echo $staff['donvi']; ?></td>
<td><?php echo $staff['congviec']; ?></td>
<td><?php echo $staff['luongtong']; ?></td>
<td><?php echo $staff['luongthuc']; ?></td>
</tr>
<?php endforeach;?>
</table>
</body>
</html>
<?php
// 3. 关闭连接[可选]
// $pdo = null;
unset($pdo);
?>
演示效果:
三、代码演示更新:
<?php
// 数据表更新操作
use PDO;
// 1. 连接数据库
require 'connect.php';
// 2. 操作数据表(CURD)
// 更新语句:$sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
$sql = "UPDATE `staffs` SET `donvi` = ? WHERE `id`= ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(['三分厂前纺运转丙班', 2]);
// echo $sql;die;
// 判断是否执行成功
// $stmt->rowCount(): 返回写操作产生的受影响的记录数量
if ($stmt->rowCount() >= 1) {
echo '更新成功';
} else {
echo '没有记录被更新';
print_r($stmt->errorInfo());
}
// 3. 关闭连接[可选]
unset($pdo);
演示效果:
四、代码演示删除:
<?php
// 数据表删除操作
use PDO;
// 1. 连接数据库
require 'connect.php';
// 2. 操作数据表(CURD)
// 删除语句:$sql = "DELETE FROM 表名 WHERE 删除条件"
$sql = "DELETE FROM `staffs` WHERE `id`=:id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id'=>12]);
// 判断是否执行成功
// $stmt->rowCount(): 返回写操作产生的受影响的记录数量
if ($stmt->rowCount() === 1) {
echo '删除成功';
}
// 3. 关闭连接[可选]
unset($pdo);
演示效果:
总结
重点掌握sql语句
和PDO预处理方法
,sql语句
一定要做到倒背如流。