Correction status:Uncorrected
Teacher's comments:
大家好:
以下是MySQLi面向对象实现更新操作 和 PDO实现删除操作的练习,如有错误望大家指出,谢谢
<?php //1.连接参数 $db_host = 'localhost'; $db_user = 'root'; $db_pass = 'root'; $db_name = 'php'; $db_charset = 'utf8'; //2.连接数据库服务器,并返回mysqli对象 $mysqli = @new mysqli($db_host,$db_user,$db_pass); //3.检测是否连接成功 if ($mysqli->connect_errno) { exit('连接错误'.$mysqli->connect_errno.':'.$mysqli->connect_error); } //4.设置默认数据库 $mysqli->select_db($db_name); //5.设置客户端默认字符编码集 $mysqli->set_charset($db_charset); //面向对象使用预处理进行更新操作 //准备SQL语句 $sql = "UPDATE staff SET salary = ? WHERE staff_id = ?;"; //创建STMT预处理对象 $stmt = $mysqli->stmt_init(); //检测预处理SQL语句 if ($stmt->prepare($sql)) { //绑定参数到预处理SQL语句 $stmt->bind_param('ii',$salary,$staff_id); //设置参数 $salary = 5000; $staff_id = 12; //执行预处理语句 $stmt->execute(); if ($stmt->affected_rows > 0 ){ echo '<br>成功更新'.$stmt->affected_rows.'条记录'; } else { echo '<br>没有更新记录'; } //注销stmt对象 $stmt->close(); } else { exit($stmt->errno.':'.$stmt->error); } //关闭数据库连接 $mysqli->close();
点击 "运行实例" 按钮查看在线实例
<?php //1.配置参数 /** * DNS:数据源 * 基本格式: 数据库类型:属性1:值1; 属性2:值2;... * 类型:如mysqli,oracle等 * 属性: 主机,默认数据库,默认字符集,默认端口号 * 例如: mysql:host=127.0.0.1;dbname=php;charset=utf8;port=3306; */ $dsn = 'mysql:host=localhost; dbname=php; charset=utf8; port=3306'; //数据库用户名 $userName = 'root'; //数据库用户密码 $password = 'root'; //配置连接属性 $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //设置错误模式 PDO::ATTR_CASE => PDO::CASE_NATURAL, //数据表字段保持不变 PDO::ATTR_EMULATE_PREPARES => true, //启用PDO模拟 PDO::ATTR_PERSISTENT => true, //启用持久性连接 ]; //使用try-catch()来捕获可能发生的错误 try { //调用PDO构造函数实例化PDO类,创建PDO对象 $pdo = new PDO($dsn, $userName, $password, $options); //连接是所有操作的基础,无论你设置的错误模式级别是什么,都会强制使用EXCEPTION异常模式 } catch (PDOException $e) { print 'Connect ERROR!:'.$e->getMessage(); //推荐使用英文提示,以防止页面中文乱码 die(); //连接错误是致命错误,必须停止脚本的执行 } // PDO实现删除操作 //准备sql语句 $sql = "DELETE FROM staff WHERE staff_id=:staff_id"; //创建预处理对象stmt对象 if($stmt = $pdo->prepare($sql)) { //将参数绑定到stmt对象并执行 //准备参数 $param = ['staff_id'=>5]; //绑定参数到SQL语句对象并执行 if ($stmt -> execute($param)){ //rowCount()返回删除的数量 if ($stmt->rowCount()>0) { echo '成功删除了'.$stmt->rowCount().'条记录'; } else { //等于0表示没有记录被删除 echo '没有记录被删除'; } } else { //执行失败的信息 print_r($stmt->errorInfo()); exit(); } } else { //$stmt语句对象创建失败 print_r($pdo->errorInfo()); exit(); } //销毁PDO对象 $pdo = null;
点击 "运行实例" 按钮查看在线实例
课程总结
1.了解面向对象的curd操作的基本流程
2.了解绑定参数到预处理SQL语句的方法 — $stmt->bind_param()
3.了解PDO操作的数据库的基本流程
4.学习使用try-catch()来捕获可能发生的错误的方法