批改状态:合格
老师批语:
操作简称:CURD,增删改查、它代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。
连接数据库
<?phpnamespace pdo_deu;return [// dsn'type' => 'mysql','host' => '127.0.0.1','dbname' => 'mydb','port' => '3306','charset' => 'utf8',// username'username' => 'myshop','password' => 'yzj123',];
<?phpnamespace pdo_deu;use PDO;$dbConfig = require 'database.php';extract($dbConfig); //extract()提取参数 将关联数组中的每一个成员,打散成独立变量// printf('<pre>%s</pre>',print_r($dbConfig,true));// 1. dsn$tpl = '%s:host=%s;dbname=%s;port=%s;charset=%s';$args = [$type,$host,$dbname,$port,$charset];$dsn = sprintf($tpl,...$args);// echo $dsn;// 2. 创建数据对象$db = new PDO($dsn, $username, $password);// var_dump($db);if($db){echo '数据库连接成功!';}// 设置结果集的默认获取模式:只要关联部分$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

1、CURD: INSERT 插入数据
<?phpnamespace php_edu;// 1、连接数据库require __DIR__ .'/config/connect.php';$sql = 'INSERT `staff` SET `name` = ?, `sex` = ?, `email` = ?';$stmt = $db->prepare($sql);//2、执行SQL语句$stmt->execute(['小龙女', 1, 'xiaolongnv@php.cn']);$stmt->execute(['洪七公', 0, 'hongqigong@php.cn']);$stmt->execute(['黄蓉', 0, 'huangrong@php.cn']);// 成功if($stmt->rowCount() > 0){echo '新增成功,新增记录的主键ID = ' . $db->lastInsertId();}else{echo '新增失败';print_r($stmt->errorInfo());}

2、CURD: UPDATE
<?phpnamespace php_deu;// 1、连接数据库require __DIR__ .'/config/connect.php';// 2.CURD: UPDATE 更新// UPDATE 表名 SET 字段1=值1 ... WHERE 更新条件$sql = 'UPDATE `staff` SET `name` = ? WHERE `id` = ?';$stmt = $db->prepare($sql);$stmt->execute(['黄蓉2',3]);if($stmt->rowCount() > 0){echo '更新成功';} else {echo '更新失败';print_r($stmt->errorInfo());}

3、CURD: DELETE
<?phpnamespace php_edu;// 1、连接数据库require __DIR__.'/config/connect.php';// 2、CURD:DELETE 删除// DELETE FROM 表名 SET 字段1=值1 ... WHERE 更新条件// $sql = 'DELETE FROM `staff` WHERE `id` = ?';// '?' :匿名占位符// 'string': 命名占位符$sql = 'DELETE FROM `staff` WHERE `id` = :id';$stmt = $db->prepare($sql);$stmt->execute([':id' => $_GET['id']]);// 如果条件来自外部,例如url中get参数echo $_GET['id'];if($stmt->rowCount() > 0){echo 'id = '.$_GET['id'].' 删除成功';}else{echo '删除失败<hr>';print_r($stmt->errorInfo());}


4、CURD: SELECT
(1)单条查询
<?phpnamespace php_edu;use PDO;// 1.连接数据库require __DIR__.'/config/connect.php';// 2. CURD: SELECT 单条查询// SELECT 字段列表 FROM 表名 WHERE 查询条件$sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';$stmt = $db->prepare($sql);$stmt->execute(['id'=>0]);// 单条查询// $staff = $stmt->fetch(PDO::FETCH_ASSOC);// printf('<pre>%s</pre>',print_r($staff,true));// PDO::FETCH_ASSOC:结果集获取模式,只返回关联部分while($staff = $stmt->fetch()){printf('<pre>%s</pre>',print_r($staff,true));}

(2)多条查询
<?phpnamespace php_edu;use PDO;// 1.连接数据库require __DIR__ .'/config/connect.php';// 2.CURD: SELECT 多条查询// SELECT 字段列表 FROM 表名 WHERE 查询条件$sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';$stmt = $db->prepare($sql);$stmt->execute(['id' => 1]);// fetchAll: 返回全部满足条件的记录集合,二维数组$staffs = $stmt->fetchAll();// print_r($staffs);printf('<pre>%s</pre>',print_r($staffs,true));foreach($staffs as $staff){printf('<pre>%s</pre>',print_r($staff,true));}

(1)为什么要用预处理(语句被执行前进行一些处理)

2、数据延迟绑定
3、编程时只写SQL语句模板,执行SQL时再给占位符绑定真实数据
(2)预处理过程
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号