PHP 数据库操作总结
1.SQL
简单操作
$sql = "INSERT 数据表名称 SET 设置项目值";
:在数据库中插入数据$sql = "INSERT INTO 数据表名称(设置项目) VALUES(设置值)";
:在数据库中插入数据$sql = "UPDATE 数据表名称 SET 设置项目值 WHERE 条件";
:在数据库中修改/更新数据$sql = "DELETE FROM 数据表名称 WHERE 条件";
:在数据库中删除某数据$sql = "SELECT 查找的项目 FROM 数据表名称 WHERE 条件";
:在数据库中查找数据
2.mysqli
操作mysql
数据库
2.1 操作步骤
- 1.设置连接参数建立数据库连接
$mysqli = new mysqli($host, $username, $password, $dbname);
:创建连接对象 连接数据库if($mysqli->connect_errno)die('Connect Error:'.$mysqli->connect_error);
:检测错误$mysqli->set_charset($charset);
:设置客户端字符集编码
- 2.操作数据库并使用预处理将
sql
语句转为sql
语句对象:$stmt = $mysqli->prepare($sql);
- 3.参数绑定:
$stmt->bind_param('i', $id);
- 4.给被绑定的变量进行赋值
- 5.执行
sql
语句:$stmt->execute() or die($stmt->error);
- 6.获取相关操作结果
- 7.关闭数据库连接:
$mysqli->close();
2.2 属性/方法
属性/方法 |
描述 |
mysqli() |
创建连接对象 连接数据库 |
connect_errno |
返回连接错误代码 |
connect_error |
返回连接错误信息 |
set_charset() |
设置默认字符编码 |
prepare() |
准备执行一个 sql 语句 并返回语句对象 |
bind_param() |
将变量作为参数绑定到准备好的语句 |
execute() |
执行一条预处理语句 |
errno |
返回语句调用的错误代码 |
error |
返回语句调用的错误信息 |
affected_rows |
返回最后执行的语句更改、删除或插入的行总数 |
insert_id |
获取从上一次插入操作生成的 id |
get_result() |
从执行后 sql 语句对象中获取结果集 |
num_rows |
返回结果中的行数 |
fetch_assoc() |
以关联数组形式获取结果行 |
fetch_array() |
以索引数组形式获取结果行 |
fetchAll() |
以关联、索引数组或两者都有的形式获取所有结果行 |
bind_result() |
将变量绑定到准备好的语句中用作存储结果 |
fetch() |
将准备好的语句的结果存储到绑定的变量中 |
free() |
释放结果集占用的内存 |
close() |
关闭数据库连接 |
2.3 示例
<?php
//连接数据库
$mysqli = new mysqli('localhost', 'root', 'root','db_users');
if($mysqli->connect_errno) die('连接错误:'.$mysqli->connect_error);
$mysqli->set_charset('utf8');
//操作数据库 预处理 绑定参数 新增数据
$sql = 'INSERT `user` SET `username`=?,`password`=?';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('ss', $name, $pwd);
$name = 'php';
$pwd = md5('php.cn');
//执行预处理语句
$stmt->execute() or die($stmt->error);
//获取操作结果 受影响行数 新增的主键ID
$aff_rows = $stmt->affected_rows;
$ins_id = $stmt->insert_id;
echo '新增了'.$aff_rows.'条数据,新增的主键ID='.$ins_id.'<br>';
//操作数据库 预处理 绑定参数 更新数据
$sql = 'UPDATE `user` SET `username`=?,`password`=? WHERE `id`=?';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('ssi', $name, $pwd, $id);
$name = 'mysqli';
$pwd = md5('mysqli');
$id = $ins_id;
//执行预处理语句
$stmt->execute() or die($stmt->error);
//获取操作结果 受影响行数
$aff_rows = $stmt->affected_rows;
echo '更新了'.$aff_rows.'条数据'.'<br>';
//操作数据库 预处理 绑定参数 删除
$sql = 'DELETE FROM `user` WHERE `id`=?';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('i', $id);
$id = $ins_id;
//执行预处理语句
$stmt->execute() or die($stmt->error);
//获取操作结果 受影响行数
$aff_rows = $stmt->affected_rows;
echo '删除了'.$aff_rows.'条数据'.'<br>';
//操作数据库 预处理 绑定参数 查找并遍历数据
$sql = 'SELECT `username` FROM `user` WHERE `id`=?';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('i', $id);
$id = 1;
//执行预处理语句
$stmt->execute() or die($stmt->error);
//获取操作结果
$result = $stmt->get_result();
if($result->num_rows > 0) vprintf('查找结果:%s',$result->fetch_assoc());
3.PDO
操作mysql
数据库
3.1 操作步骤
- 1.设置连接参数建立数据库连接:
$pdo = new PDO($dsn, $username, $password);
- 2.操作数据库并使用预处理将
sql
语句转为sql
语句对象:$stmt = $pdo->prepare($sql);
- 3.参数绑定:
$stmt->bindParam(1,$username,PDO::PARAM_STR,50);
- 4.给被绑定的变量进行赋值
- 5.执行
sql
语句:$stmt->execute();
- 6.获取相关操作结果
- 7.关闭数据库连接:
$pdo = null;
或者unset($pdo);
3.2 属性/方法
属性/方法 |
描述 |
PDO() |
创建一个表示数据库连接的 pdo 实例 |
setAttribute() |
设置属性/设置一个语句属性 |
prepare() |
准备要执行 sql 的语句,并返回语句对象 |
bindParam() |
绑定一个参数到指定的变量名 |
bindValue() |
把一个值绑定到一个参数 |
execute() |
执行一条预处理语句 |
rowCount() |
返回受上一个 SQL 语句影响的行数 |
lastInsertId() |
返回最后插入行的 ID 或序列值 |
bindColumn() |
绑定一列到一个 PHP 变量 |
fetch() |
从结果集中获取下一行 |
fetchAll() |
返回一个包含结果集中所有行的数组 |
3.3 示例
<?php
$dsn = 'mysql:host=localhost;dbname=db_users;charset=utf8';
$pdo = new PDO($dsn, 'root', 'root');
//操作数据库 预处理 绑定参数 新增操作1
$sql = 'INSERT `user` SET `username`=?,`password`=?';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $pwd);
$name = 'php';
$pwd = md5('php.cn');
//执行预处理语句
$stmt->execute();
//获取操作结果 受影响行数 新增的主键ID
$aff_rows = $stmt->rowCount();
$ins_id = $pdo->lastInsertId();
echo '新增了'.$aff_rows.'条数据,新增的主键ID='.$ins_id.'<br>';
//新增操作2
$name = 'php';
$pwd = md5('php.cn');
$stmt->bindValue(1, $name);
$stmt->bindValue(2, $pwd);
//执行预处理语句
$stmt->execute();
//获取操作结果 受影响行数 新增的主键ID
$aff_rows = $stmt->rowCount();
$ins_id = $pdo->lastInsertId();
echo '新增了'.$aff_rows.'条数据,新增的主键ID='.$ins_id.'<br>';
//新增操作3
//执行预处理语句 并绑定值
$stmt->execute(['php',md5('php')]);
//获取操作结果 受影响行数 新增的主键ID
$aff_rows = $stmt->rowCount();
$ins_id = $pdo->lastInsertId();
echo '新增了'.$aff_rows.'条数据,新增的主键ID='.$ins_id.'<br>';
//操作数据库 预处理 绑定参数 更新数据
$sql = 'UPDATE `user` SET `username`=?,`password`=? WHERE `id`=?';
$stmt = $pdo->prepare($sql);
//执行预处理语句 并绑定值
$stmt->execute(['mysqli', md5('mysqli'), $ins_id]);
//获取操作结果 受影响行数
$aff_rows = $stmt->rowCount();
echo '更新了'.$aff_rows.'条数据'.'<br>';
//操作数据库 预处理 绑定参数 删除
$sql = 'DELETE FROM `user` WHERE `id`=?';
$stmt = $pdo->prepare($sql);
//执行预处理语句 并绑定值
$stmt->execute([$ins_id]);
//获取操作结果 受影响行数
$aff_rows = $stmt->rowCount();
echo '删除了'.$aff_rows.'条数据'.'<br>';
//操作数据库 预处理 绑定参数 查找并遍历数据
$sql = 'SELECT `username` FROM `user` WHERE `id`=?';
$stmt = $pdo->prepare($sql);
//执行预处理语句 并绑定值
$stmt->execute([1]);
//获取操作结果
$result = $stmt->fetch();
vprintf('查找结果:%s',$result);