批改状态:合格
老师批语:还要多加练习呀
这一块一般都是在安装一个程序的安装界面会提示用户输入相关的信息
<?phpnamespace pdo_edu;//数据库连接配置参数return [//数据库类型'type' => $type ?? 'mysql',//主机'host' => $host ?? 'localhost',//数据库名'dbname' => $dbname ?? 'php',//默认字符编码集'charset' => $charset ?? 'utf8',//连接端口'port' => $port ?? '3306',//连接用户名'username' => $username ?? 'root',//连接密码'password' => $password ?? 'root123456'];// print_r($config);
$dsn = sprintf('%s:host=%s;dbname=%s', $type, $host, $dbname);$dsn = $type . ':' . 'host=' . $host . ';dbname=' . $dbname;
<?php// 连接数据库namespace pdo_edu;use Exception;use PDO;// 加载配置参数$config = require 'config.php';// PDO: PHP Data Object, php数据对象// pdo可以让php对所有类型的数据库, 提供了一个统一的,轻量级的访问接口// PDO连接数据库三要素, 三个重要参数,// 数据源: DSN// 用户名: username// 用户密码: password// DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=... ;port= ...// $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';$type = $config['type'];$host = $config['host'];$dbname = $config['dbname'];$username = $config['username'];$password = $config['password'];// 创建DSN$dsn = sprintf('%s:host=%s;dbname=%s', $type, $host, $dbname);// $dsn = $type . ':' . 'host=' . $host . ';dbname=' . $dbname;try {// 连接数据库$pdo = new PDO($dsn, $username, $password);// var_dump($pdo);} catch (Exception $e) {die($e->getMessage());}
$sql = "INSERTusersSETname=?,age=?";
$sql = "INSERT INTOusersVALUES (null,?,?)";
<?php// 数据表查询: 新增数据namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// $sql = 'INSERT 表名 SET name=?,age=?...';$sql = "INSERT `users` SET `name`=?,`age`=?";//第二种方式$sql = "INSERT INTO `users` VALUES (null,?,?)";$stmt = $pdo->prepare($sql);$data = ['无敌韦小宝12', 66];$stmt->execute($data);// $stmt->rowCount():受影响的记录数if ($stmt->rowCount() === 1) {echo '新增成功,新增记录的主键:' . $pdo->lastInsertId();} else {echo '新增失败';print_r($stmt->errorInfo());}unset($pdo);
$sql="DELETE FROM 表名 WHERE 删除条件 "
<?php// 数据表更新操作namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// $sql="DELETE FROM 表名 WHERE 删除条件 "$sql = "DELETE FROM `users` WHERE `id`= ? ";$stmt = $pdo->prepare($sql);$data = ['10'];$stmt->execute($data);// $stmt->rowCount():受影响的记录数if ($stmt->rowCount() === 1) {echo '删除成功';}unset($pdo);
$sql="UPDATE 表名 SET 字段=新的值 WHERE 更新条件 "
<?php// 数据表更新操作namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// $sql="UPDATE 表名 SET 字段=新的值 WHERE 更新条件 "$sql = "UPDATE `users` SET `name`= ? WHERE `id`= ? ";$stmt = $pdo->prepare($sql);$data = ['无敌是多么寂寞', 8];$stmt->execute($data);// $stmt->rowCount():受影响的记录数if ($stmt->rowCount() === 1) {echo '更新成功';} else {echo '更新失败';print_r($stmt->errorInfo());}unset($pdo);
$sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
<?php// 数据表查询: 多条查询namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// echo '成功了';// 2. 操作数据表(CURD)// $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '//匿名占位符// $sql = 'SELECT * FROM `users` WHERE `age` < ?';//命名占位符$sql = 'SELECT * FROM `users` WHERE `age` < :age';// 预处理对象$stmt:为了防止 SQL注入$stmt = $pdo->prepare($sql);// 预处理对象$stmt , 就是SQL语句对象// 使用预处理对象调用 execute()执行这条sql语句// 对应匿名占位符,索引数组// $stmt->execute([18]);// 对应命名占位符,使用关联数组$stmt->execute([':age' => 15]);$users = $stmt->fetchAll(PDO::FETCH_ASSOC);// print_r($users);foreach ($users as $user) {printf('id=%s:姓名:%s---年龄=%s<br>', $user['id'], $user['name'], $user['age']);}//3.关闭数据库unset($pdo);
数据库的增删改查工作是最基本也是最常用的,随着框架的发展,开发人员已经很少会使用这些指令了,数据库的功能仅仅就是储存数据,读和写的操作。PDO 是一个很好的连接数据库操作方法,有效的防止基本的 SQL 语句注入,但同样如果从一些未定义的类访问也会造成漏洞的存在,相对来说功能会越来越完善的。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号