一、常用的CUR
最常用的就是: `CURD` 增删改查 它代表创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。
新增操作语法
* SQL规范: `INSERT INTO `数据表` (`字段1`,`字段2`...) VALUES ('值1','值2'...)`
* 优点: 通用规范, 移植性好, 可同时插入多条记录
* 缺点: 字段与值的顺序必须一一对应, 容易出现拼写错误
* MySQL扩展: `INSERT INTO `数据表` SET `字段1`='值1', `字段2`='值2'... `
* 优点: 语法简洁优雅, 执行效率是传统语法的3倍以上
* 缺点: 只适用于`MySQL`数据库, 移植性差,并且不支持同时插入多条记录
> Tips: 语句中的 `INTO` 可以省略, 主键可忽略赋值,如果赋值必须是为`NULL`
* 举例: `INSERT `category` (`email`,`password`) VALUES ('admin@php.cn','123');`
以上三种方式,都使用过,均可使用。
删除操作语法
* `DELETE FROM `数据表` WHERE 删除条件`
* 与更新一样, 不能省略删除条件
更新操作语法
* `UPDATE `数据表` SET `字段1`='值1', `字段2`='值2'... WHERE 更新条件`
* 不要无条件更新
> `INSERT / UPDATE / DELETE`: 都是写操作, 会影响到当前数据表中的记录内容,返回受影响的记录数量
查询操作语法
* `SELECT `字段列表` FROM `数据表名` WHERE 查询条件`
* 结果集控制: `ORDER BY`排序, `GROUP BY`分组, `LIMIT`限制数量...
* 举例: `SELECT * FROM `user` WHERE `id` > 10 LIMIT 5`
* 查询语句是最灵活,也是最常用的功能, 日常80%以上操作与查询相关
* 查询不会影响到表中数据, 返回结果集
二、PDO中操作数据表的基本步骤
PHP数据对象(PDO),扩展为PHP访问数据库定义了一个轻量级的一致借口
PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数来查询和获取数据
PDO操作步骤分三步:
第一步:连接数据库 : $pdo = new PDO($dsn,$user,$pass)
第二步:执行SQL语句: INSERT/DELETE/UPDATE/SELECT
第三步:关闭连接【可选】: $pdo = null; //unset($pdo); 等价
三、实例演示insert/update/delete/select用法
操作前,先配置数据库
database.php
<?php return [ 'type' => 'mysql', 'host' => 'localhost', 'dbname' => 'php', 'username' =>'root', 'password' => 'root' ];
connect.php
<?php //引入连接数据文件 $db = require 'database.php'; //配置数据源DSN信息 $dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}"; //连接数据库 try{ $pdo = new PDO($dsn,$db['username'],$db['password']); // echo "success"; }catch(PDOException $e){ die('loser'.$e->getMessage()); }
操作案例如下:
delete.php代码
<?php // 删除记录 功能:删除cate_id等于8的记录 //1.连接数据库 require __DIR__.'/inc/connect.php'; //2.创建预处理对象 $stmt = $pdo->prepare('DELETE FROM `category` WHERE `cate_id`=:cate_id'); //3.执行SQL语句,cate_id等于8的记录 $stmt->execute(['cate_id'=>8]); echo '成功删除'.$stmt->rowCount().'条记录'; ////4.关闭连接 $pdo = null;
本地运行截图:
update.php
<?php // 更新记录 功能:将cate_id 等于6的name值改为xjj,alias值改为小姐姐 //基本语法 //* `UPDATE `数据表` SET `字段1`='值1', `字段2`='值2'... WHERE 更新条件` //* 不要无条件更新 //1.连接数据库 require __DIR__.'/inc/connect.php'; //2.创建预处理对象 $stmt = $pdo->prepare('UPDATE `category` SET `name`= :name,`alias`= :alias WHERE `cate_id`=:cate_id'); //3.执行SQL语句,更新cate_id 等于6的name值改为xjj,alias值改为小姐姐 $stmt->execute(['name' => 'xjj','alias' => '小姐姐','cate_id'=>6]); echo '成功更新'.$stmt->rowCount().'条记录'; ////4.关闭连接 $pdo = null;//unset($pdo);等价
本地运行截图:
insert.php
<?php //新增记录 功能:增加一条记录,name为yhhp,alias为用户好评 //1.连接数据库 require __DIR__.'/inc/connect.php'; //2.创建预处理对象 $stmt = $pdo->prepare('INSERT INTO `category` SET `name`= :name,`alias`= :alias'); //3.执行SQL语句 $stmt->execute(['name' => 'yhhp','alias' => '用户好评']); echo '成功添加'.$stmt->rowCount().'条记录,该记录的主键id是:'.$pdo->lastInsertId(); ////4.关闭连接 $pdo = null;//unset($pdo);等价
本地运行截图:
select.php
<?php //查询操作 功能:查询cate_id等于2的所有数据 //查询操作基本语法 //* `SELECT `字段列表` FROM `数据表名` WHERE 查询条件` //* 结果集控制: `ORDER BY`排序, `GROUP BY`分组, `LIMIT`限制数量... //* 举例: `SELECT * FROM `user` WHERE `id` > 10 LIMIT 5` //* 查询语句是最灵活,也是最常用的功能, 日常80%以上操作与查询相关 //* 查询不会影响到表中数据, 返回结果集 //1.连接数据库 require __DIR__.'/inc/connect.php'; //2.创建预处理对象 $stmt = $pdo->prepare('SELECT * FROM `movies` WHERE `cate_id`=:cate_id'); //3.执行SQL语句 $stmt->execute(['cate_id'=>2]); //遍历 //查询方法1,追条方式获取 //while() //PDO::FETCH_ASSOC:获取模式,功能:只获关联部分数据,没有取索引部分数据 while ($movie =$stmt->fetch(PDO::FETCH_ASSOC) ) { echo '<pre>'.print_r($movie,true); } //查询方法2,多条方式获取,耗内存 //foreach() //$movies = $stmt->fetchAll(PDO::FETCH_ASSOC); //foreach ($movies as $movie){ // echo '<pre>'.print_r($movie,true); //} ////4.关闭连接 //$pdo = null;//unset($pdo);等价
本地运行截图:
总结
* 最常用的就是: `CURD` 增删改查
* `SQL`语句编写规范
* 关键字全部大写: `SELECT / INSERT / DELETE / UPDATE ...`
* 表名与字段名使用反引号定界符: 表名`user`, 字段名`email`
* 具体值,有类型与长度等属性