批改状态:合格
老师批语:先掌握常用的方法
<?php// 数据库的型号define('DB_TYPE', 'mysql');// 数据库主机名define('DB_HOST', 'localhost');// 数据库用户名define('DB_USER', 'root');// 数据库密码define('DB_PSD', 'root');// 数据库名称define('DB_NAME', 'user');// 数据库端口号define('DB_PORT', 3306);// 数据库的编码集define('DB_CHARSET', 'utf8');// 定义pdo中dsn的主机名,数据库型号,数据库名和编码方式define('DB_DSN', DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET);
<?php// 引用数据库配置文件require "config.php";try {// 使用pdo进行数据库连接$pdo = new PDO(DB_DSN, DB_USER, DB_PSD);} catch (PDOException $a) {// 捕捉pdo连接数据库错误echo $a->getMessage();}// 更新数据$sql = "UPDATE `apple` SET `username`='小喜', `sex`='女' WHERE `username`='小马'";// 插入数据$sql1 = "INSERT INTO apple(`username`,`password`,`sex`) VALUES('小哈',sha1(777777),'男')";// 删除数据$sql2 = "DELETE FROM `apple` WHERE `id`=16";// 执行sql语句// exec()执行UPDATE,INSECT,DELETEsql语句并返回受影响的行数var_dump($pdo->exec($sql));echo '<br>';var_dump($pdo->exec($sql1));echo '<br>';var_dump($pdo->exec($sql2));

<?php$sql = " SELECT *FROM `apple` WHERE `id`>10";// 用qurey()执行sql语句会以statement对象形式返回结果集$stmt = $pdo->query($sql);// 循环遍历对象echo '<table border=1>';echo '<tr>';echo '<td>' . 'id' . '</td>';echo '<td>' . '用户名' . '</td>';echo '<td>' . '密码' . '</td>';echo '<td>' . '性别' . '</td>';echo '</tr>';foreach ($stmt as $v) {echo '<tr>';echo '<td>' . $v['id'] . '</td>';echo '<td>' . $v['username'] . '</td>';echo '<td>' . $v['password'] . '</td>';echo '<td>' . $v['sex'] . '</td>';echo '</tr>';}echo '</table>';

<?php// 准备sql语句(使用?参数占位符)$sql = "SELECT * FROM `apple` WHERE `id`=?";// 准备执行sql语句$stmt = $pdo->prepare($sql);$id = 5;// 绑定参数到变量中$stmt->bindParam(1, $id);// 执行预处理语句$stmt->execute();// 查看受影响的行数echo $stmt->rowCount();foreach ($stmt as $v) {var_dump($v);}// 准备sql语句(使用命名参数占位符)$sql = "SELECT * FROM `apple` WHERE `id`=:id";// 准备执行sql语句$stmt = $pdo->prepare($sql);$id = 5;// 绑定参数到变量中$stmt->bindParam(':id', $id);// 执行预处理语句$stmt->execute();// 查看受影响的行数echo $stmt->rowCount();
‘?’参数占位符

命名参数占位符

<?php// 把一个值绑定到参数中// 准备sql语句(也可以用命名参数占位符)$sql = "SELECT * FROM `apple` WHERE `id`=?";// 准备执行sql语句$stmt = $pdo->prepare($sql);// 绑定值到参数中$stmt->bindValue(1, 5);// 执行预处理语句$stmt->execute();// 查看受影响的行数echo $stmt->rowCount();// 使用fetch返回结果中的第一个数据echo '<pre>' . print_r(($stmt->fetch(PDO::FETCH_ASSOC)), true) . '</pre><hr>';// 使用fetchAll()获取结果集echo '<pre>' . print_r(($stmt->fetchAll(PDO::FETCH_ASSOC)), true) . '</pre>';// 返回跟数据库句柄上一次操作相关的一个5位数组成SQLSTATE码var_dump($stmt->errorCode());echo '<hr>';// 返回跟数据库句柄上一次操作相关的一个信息数组var_dump($stmt->errorInfo());
把值绑定到参数

fetch()获取结果集中的第一条数据

fetchAll()获取结果集中的全部数据

捕捉错误信息

<?php$sql = "SELECT * FROM `apple` WHERE `id`>?";// 准备执行sql语句$stmt = $pdo->prepare($sql);// 绑定值到参数中$stmt->bindValue(1, 4);// 执行预处理语句$stmt->execute();// 使用fetch_all()获取结果集$a = $stmt->fetchAll(PDO::FETCH_ASSOC);// 遍历数组echo <<<TAB<table border=1 align=center><tr><td>id</td><td>姓名</td><td>密码</td><td>性别</td></tr>TAB;foreach ($a as $k => $v) {echo <<<TA<tr><td>{$v['id']}</td><td>{$v['username']}</td><td>{$v['password']}</td><td>{$v['sex']}</td></tr>TA;}echo '</table>';

总结
1.了解了PDO的一些基础操作
2.需要多敲代码形成记忆(做作业时很容易忘记代码的书写)
3.PDO还有很多方法需要自行去了解和尝试
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号