Correction status:qualified
Teacher's comments:
<?php require 'deno1.php'; //sql查询 $sql="select id,name,age from msg where age>?;"; //创建初始化预处理对象 $stmt=$mysqli->stmt_init(); if ($stmt->prepare($sql)){ //绑定参数 $stmt->bind_param('i',$age); //设置参数 $age=18; //执行 if($stmt->execute()){ //获取结果放到缓存区 $stmt->store_result(); //再将结果绑定到变量上 $stmt->bind_result($id,$name,$age); //结果不为空则遍历 if($stmt->num_rows>0){ //每遍历一次指针下移 while ($stmt->fetch()){ echo 'id:'.$id.'--姓名:'.$name.'--年龄:'.$age; } }else{ die('当前无数据'); } //释放结果 $stmt->free_result(); }else {die('链接失败'.$stmt->errno.':'.$stmt->error);} }else{ die('链接失败'.$stmt->errno.':'.$stmt->error); } $stmt->close(); $mysqli->close();
点击 "运行实例" 按钮查看在线实例
PDO对象,兼容更多数据库,同样的语法访问不同数据库。
PDO 连接数据库
<?php $dns='mysql:host=127.0.0.1;dbname=php'; $user='root'; $pass='root'; try{ $pdo=new pdo($dns,$user,$pass); echo '连接成功'; }catch (pdoexception $e){ die('连接失败'.':'.$e->getMessage()); } $pdo=null;
点击 "运行实例" 按钮查看在线实例
4. 编程:PDO新增数据
<?php $dns='mysql:host=127.0.0.1;dbname=php'; $user='root'; $pass='root'; try{ $pdo=new pdo($dns,$user,$pass); echo '连接成功'; }catch (pdoexception $e){ die('连接失败'.':'.$e->getMessage()); } $sql="insert into msg set name=:name,age=:age"; //创建预处理对象 $stmt=$pdo->prepare($sql); //绑定参数 $data=['name'=>'小小布','age'=>8]; $stmt->bindparam(':name',$data['name'],PDO::PARAM_STR); $stmt->bindParam (':age',$data['age'],PDO::PARAM_INT); if ($stmt->execute()) { // rowCount(): 返回受影响的记录数量 echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>'; } else { echo '<h3>添加失败</h3>'; print_r($stmt->errorInfo()); exit(); } $stmt = null; $pdo=null;
点击 "运行实例" 按钮查看在线实例
5.编程: PDO更新数据
<?php $pdo=new pdo('mysql:host=127.0.0.1;dbname=php','root','root'); $sql="update msg set name=:name where id=:id"; //创建预处理对象 $stmt=$pdo->prepare($sql); $stmt->execute(['name'=>'小小布','id'=>5]); echo '更新成功'.$stmt->rowCount().'条记录'; $stmt = null; $pdo=null;
点击 "运行实例" 按钮查看在线实例
6. 编程: PDO 删除数据
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root'); $sql = "DELETE FROM `msg` WHERE `id`= :id"; $stmt = $pdo->prepare($sql); if ($stmt->execute(['id'=>5])) { echo '<h3>成功删除了'.$stmt->rowCount().'条记录</h3>'; } else { echo '<h3>无删除</h3>'; print_r($stmt->errorInfo()); exit(); } $stmt = null; $pdo = null;
点击 "运行实例" 按钮查看在线实例
7. 编程:PDO查询数据
<?php $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root'); $sql = "SELECT `name`,`age` FROM `msg` WHERE `id` < :id"; $stmt = $pdo->prepare($sql); $stmt->execute(['id'=>6]); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo var_export($row),'<br>'; }
点击 "运行实例" 按钮查看在线实例
8. 问答: 获取结果集记录数量的正确方式是什么?
PDOStatement::rowCount() 返回上一个由对应的 PDOStatement 对象执行DELETE、 INSERT、或 UPDATE 语句受影响的行数。如果上一条由相关 PDOStatement 执行的 SQL 语句是一条 SELECT 语句,有些数据可能返回由此语句返回的行数。但这种方式不能保证对所有数据有效,且对于可移植的应用不应依赖于此方式
通过SELECT COUNT(*) 语句来定义,然后用 fetchColumn() 来取得返回的行数。这样应用程序才能正确执行。