Correction status:qualified
Teacher's comments:
1.编程:MySQLi面向对象中的查询操作:
<?php error_reporting(E_ALL ^E_WARNING); $mysqli = new mysqli('127.0.0.1','root','root','user'); if ($mysqli->connect_errno) { die('连接失败'.$mysql->connect_errno.':'.$mysql->connect_error); }else{ echo '连接成功'; } $sql = "SELECT `id`,`name`,`age` FROM `name` WHERE `age`> ? ;";//创建查询sql语句 $tmp = $mysqli->stmt_init();//初始化预处理对象 if ($tmp->prepare($sql)) { $tmp->bind_param('i', $age); $age = 5; if ($tmp->execute()) { $tmp->store_result();//保存变量到缓存 $tmp->bind_result($id, $name, $age);//结果集绑定到变量上 //结果集是否不为,只有不为空的时候才遍历 if ($tmp->num_rows > 0) { // 循环遍历结果集 while ($tmp->fetch()) { echo '<p>id:'.$id.'---姓名:'.$name.'---年龄:'.$age.'</p>'; } }else { exit('<p>当前表中没有数据</p>'); } }else { //返回执行阶段的出错信息 exit($stmt->errno . ': ' . $stmt->error); } } else { //返回执行阶段的出错信息 exit($stmt->errno . ': ' . $stmt->error); }
点击 "运行实例" 按钮查看在线实例
2. 问答: PDO 的优势:
答:PDO操作起来更方便,更便捷,有更多的封装函数,有预处理对象,减少和降低外部对SQL的注入攻击,易于在不同数据库之间进行转换
3. 编程:PDO 连接数据库:
<?php $dsn = 'mysql:host=127.0.0.1; dbname=user'; //PDO数据库连接 try{ $pdo = new PDO($dsn,'root','root'); echo '连接成功','</br>'; }catch(PDOException $e){ die('连接错误'.$e->getMessage()); }
点击 "运行实例" 按钮查看在线实例
4. 编程:PDO新增数据:
<?php $dsn = 'mysql:host=127.0.0.1; dbname=user'; //PDO数据库连接 try{ $pdo = new PDO($dsn,'root','root'); echo '连接成功','</br>'; }catch(PDOException $e){ die('连接错误'.$e->getMessage()); } //PDO新增数据 $sql = "INSERT `name` SET `name`=:name,`age`=:age"; //创建与处理对象 $stmt = $pdo->prepare($sql); //设置添加数据数组 $data = ['name'=>'alex','age'=>34]; $stmt->bindParam(':name',$data['name'],PDO::PARAM_STR); $stmt->bindParam(':age',$data['age'],PDO::PARAM_INT); if ($stmt->execute()) { echo '<h3>成功添加了'.$stmt->rowcount().'条数据</h3>'; }else{ echo '<h3>添加失败</h3>'; print_r($stmt->errorInfo()); exit(); }
点击 "运行实例" 按钮查看在线实例
5.编程: PDO更新数据:
<?php $dsn = 'mysql:host=127.0.0.1; dbname=user'; //PDO数据库连接 try{ $pdo = new PDO($dsn,'root','root'); echo '连接成功','</br>'; }catch(PDOException $e){ die('连接错误'.$e->getMessage()); } //PDO更新数据 $updatesql = "UPDATE `name` SET `name`= :name WHERE `id`= :id"; $stmt = $pdo->prepare($updatesql); if ($stmt->execute(['name'=>'小二郎','id'=>3])) { echo '<h3>更新了'.$stmt->rowcount().'条数据</h3>'; }else{ echo '<h3>更新失败</h3>'; print_r($stmt->errorInfo()); exit(); }
点击 "运行实例" 按钮查看在线实例
6. 编程: PDO 删除数据:
<?php $dsn = 'mysql:host=127.0.0.1; dbname=user'; //PDO数据库连接 try{ $pdo = new PDO($dsn,'root','root'); echo '连接成功','</br>'; }catch(PDOException $e){ die('连接错误'.$e->getMessage()); } //PDO删除数据 //删除sql语句 $deletesql = "DELETE FROM `name` WHERE `id`= :id"; $stmt = $pdo->prepare($deletesql); if ($stmt->execute(['id'=>1])) { echo '<h3>删除了'.$stmt->rowcount().'条数据</h3>'; }else{ echo '<h3>删除失败</h3>'; print_r($stmt->errorInfo()); exit(); }
点击 "运行实例" 按钮查看在线实例
7. 编程:PDO查询数据:
<?php $dsn = 'mysql:host=127.0.0.1; dbname=user'; //PDO数据库连接 try{ $pdo = new PDO($dsn,'root','root'); echo '连接成功','</br>'; }catch(PDOException $e){ die('连接错误'.$e->getMessage()); } //PDO查询数据 //查询sql语句 $selectsql = "SELECT `name`,`id` FROM `name` WHERE `age` > :age"; $stmt = $pdo->prepare($selectsql); $stmt->execute(['age'=>0]); //循环查询 while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ echo var_export($row),'</br>'; } $stmt = null; $pdo = null;
点击 "运行实例" 按钮查看在线实例
8.问答:获取结果集记录数量的正确方式是什么?
答:用SQL语句 "count(*)"来查询 ,最后用PDO里的 fetchColumn()获取