作业1:编程:MySQLi面向对象中的查询操作
实例
<?php /** * Created by PhpStorm. * User: Core * Date: 2018/9/2 * Time: 18:18 */ // 查询操作 require 'connect.php'; //准备一套SQL语句 // $sql = "select `name`,`sex`,`class` from `student` where `id`< ? "; $sql = "select `name`,`sex`,`class` from `student` where `bursary`> ? "; // $stmt = $mysqli->prepare($sql); //创建预处理对象 $stmt = $mysqli->stmt_init(); if($stmt->prepare($sql)){ //判断一下预处理语句成功了没 //成功了,就开始绑定参数 $stmt->bind_param('i',$bursary); //给参数赋值 $bursary = 1000; if($stmt->execute()){ //执行成功,下一步 $stmt->store_result();//将结果放到结果集里 $stmt->bind_result($name,$sex,$class); //将结果集绑定到变量上 //判断以下结果集是否为空,空是不能变量的 if($stmt->num_rows > 0){ //不为空则遍历输出 while($stmt->fetch()){ //取出每条数据,并下移 echo $name.'--'.$sex.'--'.$class.'<br>'; } }else{ //为空则提示空 echo 'result is null'; } }else{ exit($stmt->errno.':'.$stmt->error); } }else{ exit($stmt->errno.':'.$stmt->error); } //注销stmt对象 $stmt->close(); //关闭连接 $mysqli->close();
运行实例 »
点击 "运行实例" 按钮查看在线实例
本地运行截图:
作业2:问答: PDO 的优势
代码量减少
安全
作业3: 编程:PDO 连接数据库
实例
<?php /** PDO:php data object * */ $dsn = 'mysql:host=localhost; dbname=stu'; //数据源:主机IP/名字;默认数据库 $user = 'root'; $pwd = 'root'; try { $pdo = new PDO($dsn,$user,$pwd); echo 'connect success!!!'; } catch (PDOException $e){ die('error!:'.$e->getMessage()); } // 关闭pdo连接 //$pdo = null; //unset($pdo);
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业4:编程:PDO新增数据
实例
<?php /** pdo 插入数据 */ /*//require 'pdo.php'; //pdo方式连接数据库 $pdo = new PDO('mysql:host=localhost;dbname=stu','root','root'); //准备SQL预处理语句 $sql = "insert into `student` set `name`= :name,`sex`= :sex,`class`= :class,`bursary`= :bursary"; //创建预处理对象 $stmt = $pdo->prepare($sql); //绑定参数 //用数组存储数据: $data = ['name'=>'tom','sex'=>'male','class'=>'1A','bursary'=>900]; $stmt->bindParam(':name',$data['name'],PDO::PARAM_STR); //:name 和data['name']对应,最后是参数类型 $stmt->bindParam(':sex',$data['sex'],PDO::PARAM_STR); $stmt->bindParam(':class',$data['class'],PDO::PARAM_STR); $stmt->bindParam(':bursary',$data['bursary'],PDO::PARAM_STR); if ($stmt->execute()){ echo 'add'.$stmt->rowCount().'item'; }else{ echo ' fail to add !'; print_r($stmt->errorInfo());//打印错误信息 exit(); // } $stmt = null; $pdo = null;*/ //最简单的方式: //连接数据库 $pdo = new PDO('mysql:host=localhost;dbname=stu','root','root'); //创建预处理 $stmt = $pdo->prepare("insert into `student` set `name`= :name,`sex`= :sex,`class`= :class,`bursary`= :bursary"); //执行添加数据 $stmt->execute(['name'=>'andy1','sex'=>'female','class'=>'3A','bursary'=>1200]); echo 'success add '.$stmt->rowCount().' items';
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业5:编程: PDO更新数据
实例
<?php /** pdo 更新操作 */ $pdo = new PDO('mysql:host=localhost;dbname=stu','root','root'); $sql = "update `student` set `bursary`= :bursary +100 where `name`= :name "; $stmt = $pdo->prepare($sql); $stmt->execute(['bursary'=>1900,'name'=>'andy']); echo 'success '.$stmt->rowCount().' item'; $stmt = null; $pdo = null;
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业6:编程: PDO 删除数据
实例
<?php /** pdo 删除 */ //连接数据库 $pdo = new PDO('mysql:host=localhost;dbname=stu','root','root'); // 创建SQL $sql = "delete from student where `id`> :id"; //预处理语句 $stmt = $pdo->prepare($sql); $stmt->execute(['id'=>120]); echo 'delete success '.$stmt->rowCount().' items'; $stmt = null; // 关闭连接 $pdo = null;
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业7:编程:PDO查询数据
实例
<?php /** pdo 查询 */ // 连接数据库 $pdo = new PDO('mysql:host=localhost;dbname=stu','root','root'); //创建SQL语句 $sql = "select `name`,`sex`,`class` from `student` where `bursary`> :bursary"; // 预处理语句 $stmt = $pdo->prepare($sql); //执行查询语句 $stmt->execute(['bursary'=>1000]); /*//一次性取出方法 ,数据大的时候,爆内存,不建议使用 $item = $stmt->fetchAll(); foreach ($item as $value) { echo 'name:',$value['name'],'--'.$value['sex'],'--',$value['class'],'<br>'; }*/ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //PDO::FETCH_ASSOC 只取关联部分。 echo var_export($row), '<br>'; } $stmt = null; $pdo = null;
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业8;问答: 获取结果集记录数量的正确方式是什么?
* select rowcount 只是对delete,update,insert 等对数据表有写入操作的语句,返回受影响的行数,而对查询select 返回的数据
* 有的时候并不准确,我们需要通过,select count(*) 统计以下记录数,然后通过fetchColumn()来获得字段列的值。