批改状态:合格
老师批语:
PDO连接数据库步骤
define('DB_HOST','localhost'); //主机名define('DB_USER', 'root'); //连接数据库的用户名define('DB_PWD','******'); //连接数据库密码define('DB_NAME', 'test'); //数据库名称define('DB_PORT', '3306'); //数据库端口号define('DB_TYPE', 'mysql'); //数据库的型号define('DB_CHARSET', 'utf8'); //数据库的编码方式define('DB_DSN', DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);//定义PDO的DSN,数据源名,包括主机名,端口号和数据库名称。//PDO驱动程序的名称,后面为一个冒号,再后面是可选的驱动程序连接数据库变量信息,如主机名、端口和数据库名。$dsn='mysql:host=localhost;dbname=apple';
// 引入mysqli配置文件require "config.php";//try {// 数据库连接,得到一个PDO对象$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);//捕捉特定于数据库信息的PDOEXCEPTION 异常} catch(PDOException $e) {echo $e->getMessage();//捕捉拥有Throwable接口的错误或者其他异常} catch (Throwable $e) {echo $e->getMessage();}
例:$sql = "select * from stu";
// query() — 执行 SQL 语句,以 PDOStatement 对象形式返回结果集例:$stmt = $pdo->query($sql);// 遍历输出结果集foreach ($stmt as $v) {echo $v['name'],'<br>';}exec()执行一条 UPDATE,DELETE,INSERT SQL 语句,并返回受影响的行数例:$stmt = $pdo->exec($sql);
errorInfo() — 获取上一次句柄上一次操作的错误信息数组errorCode() — 获取跟数据库句柄上一次操作相关的 SQLSTATE码PDO::lastInsertId() 返回最后插入行的ID或序列值PDOStatement::fetch() 是用来获取一条记录PDOStatement::fetchAll() 是获取所有记录集到一个中
PDOStatement对象/预处理
// 引入mysqli配置文件require "config.php";// 连接数据库try {////数据库连接,得到一个PDO对象$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);// var_dump($pdo);//捕捉特定于数据库信息的PDOEXCEPTION 异常} catch(PDOException $e) {echo $e->getMessage();//捕捉拥有Throwable接口的错误或者其他异常} catch (Throwable $e) {echo $e->getMessage();}
// 使用命名参数占位符定义预处理sql语句$sql = "select * from stu where age=:age";
-定义sql语句使用?占位符定义预处理sql语句
// 使用?占位符定义预处理sql语句$sql = "select * from stu where age=?";
例:$stmt = $pdo->prepare($sql);
例:// 使用PDOStatement::bindParam给一个使用?占位符的sql语句绑定值$sql = "SELECT * FROM `STU` WHERE AGE=?";$age = 12;$stmt->bindParam(1,$age);// 使用PDOStatement::bindParam给一个使用命名参数占位符的sql语句绑定值$sql = "SELECT * FROM `STU` WHERE AGE=:age";$age = 12;$stmt->bindParam(":age",$age);
// 使用PDOStatement::bindValue给一个使用?占位符的sql语句绑定值例:$age = 12;4naem = '张三';$stmt->bindValue(1,$age);$stmt->bindValue(2,$name);// 使用PDOStatement::bindValue给一个使用命名参数占位符的sql语句绑定值例:$sql = "SELECT * FROM `STU` WHERE `AGE`=:age AND `NAME`=:name";$age = 12;4naem = '张三';$stmt->bindValue(":age",$age);$stmt->bindValue(":name",$name);
例:$stmt->execute();
区别1: PDOStatement::bindValue — 把一个值绑定到一个参数,PDOStatement::bindParam — 绑定一个参数到指定的变量名区别2: PDOStatement::bindParam()的第二个参数是按引用传递,所以只能提供变量作为参数,只有PDOStatement::execute()被执行的时候才取其值。PDOStatement::bindValue()为占位符参数绑定值,只要绑定成功,就不会再变了。
// PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE// PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息// PDOStatement::fetch — 从结果集中获取下一行// PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组// PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
使用PDO操作数据库遍历出数据表中的数据
<?php// 定义连接数据库的常量define('DB_HOST','localhost'); // 主机名define('DB_USER','root'); // 用户名define('DB_PWD', 'root'); // 密码define('DB_NAME', 'test'); // 数据库名define('DB_PORT', '3306'); //端口号define('DB_TYPE', 'mysql'); // 数据库类型define('DB_CHARSET', 'utf8'); // 字符集define('DB_DSN',DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);// 得二种源数据方式// $dsn = 'mysql:host=localhost;dbname=test';// echo $dsn;?>
<?php// 使用pdo遍历数据表中的数据// 引入数据库配置文件require "./config.php";// 连接数据库try {$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);// 抛出pdo连接数据库的错误} catch (PDOException $e) {$e->getMessage();//捕捉拥有Throwable接口的错误或者其他异常} catch (Throwable $e) {echo $e->getMessage();}// 使用命名参数方法定义预处理sql语句$sql = "SELECT * FROM `stu` WHERE id>:id";// 准备sql语句$stmt = $pdo->prepare($sql);// 使用PDOStatement::bindParam绑定参数$id = 1;$stmt->bindParam(":id",$id);// 执行预处理sql语句判断是否成功if ($stmt->execute()) {echo "<table border='1' width='300px' align='center' >";echo "<tr align='center'>";echo "<td>ID</td>";echo "<td>姓名</td>";echo "<td>年龄</td>";echo "</tr>";// 循环数据foreach ($stmt->fetchall() as $v) {echo "<tr align='center'>";echo "<td>{$v['id']}</td>";echo "<td>{$v['name']}</td>";echo "<td>{$v['age']}</td>";echo "</tr>";}echo "</table>";}?>

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号