mysqli查询操作
实例
<?php //连接数据库 require 'demo1.php'; //准备sql语句 $sql = "SELECT `id`,`name`,`salary` FROM `staff` WHERE `salary` > ? ;"; //创建预处理对象 $stmt = $mysqli->stmt_init(); if ($stmt->prepare($sql)) { //绑定参数 $stmt->bind_param('i', $salary); //设置参数 $salary = 5000; if ($stmt->execute()) { //获取结果并放在缓存区 $stmt->store_result(); //将结果绑定在变量上 $stmt->bind_result($id,$name, $salary); //判断结果集不为空遍历 if ($stmt->num_rows > 0) { while ($stmt->fetch()) { echo '<p>id:'.$id.'---姓名:' .$name.'---工资:'.$salary.'</p>'; } } else { exit('<p>当前表中没有数据</p>'); } $stmt->free_result(); } else { exit($stmt->errno. ': ' . $stmt->error); } } else { exit($stmt->errno. ': ' . $stmt->error); } $stmt->close(); $mysqli->close(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
pdo操作
pdo连接数据库
实例
<?php //pdo连接数据库 $pdo=new PDO('mysql:host=127;db_name=php','root','root');
运行实例 »
点击 "运行实例" 按钮查看在线实例
2.pdo新增数据
实例
<?php //pdo连接数据库 $pdo=new PDO('mysql:host=127;db_name=php','root','root'); //准备SQL语句用命名占位符 $sql="INSERT `user` SET `name`= :name , `email`= :email, `password`= sha1(:password)"; //创建预处理对象 $stmt=$pdo->prepare($sql); //绑定参数 $data = ['name'=>'杨过','email'=>'223@php.cn','password'=>'123']; $stmt->bindParam(':name',$data['name'],PDO::PARAM_STR); $stmt->bindParam(':email',$data['email'],PDO::PARAM_STR); $stmt->bindParam(':password',$data['password'],PDO::PARAM_STR); if ($stmt->execute()) { // rowCount(): 返回受影响的记录数量 echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>'; } else { echo '<h3>添加失败</h3>'; print_r($stmt->errorInfo()); exit(); } $stmt = null; // 关闭连接 $pdo = null;
运行实例 »
点击 "运行实例" 按钮查看在线实例
3.pdo更新数据
实例
<?php //连接数据库 $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root'); //准备SQL语句 $sql = "UPDATE `user` SET `email`= :email WHERE `id`= :id"; //创建预处理对象 $stmt = $pdo->prepare($sql); $stmt->execute(['email'=>'123@qq.com','id'=>5]); echo '<h3>成功更新了'.$stmt->rowCount().'条记录</h3>'; $stmt = null; // 关闭连接 $pdo = null;
运行实例 »
点击 "运行实例" 按钮查看在线实例
4.pdo删除数据
实例
<?php //连接数据库 $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root'); //准备SQL语句 $sql = "DELETE FROM `user` WHERE `id`= :id"; //创建预处理对象 $stmt = $pdo->prepare($sql); if ($stmt->execute(['id'=>11])) { // 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语句,占位符我们不再用?,用"命名占位符" $sql = "SELECT `name`,`email` FROM `user` WHERE `id` < :id"; //创建预处理对象 $stmt = $pdo->prepare($sql); //执行查询 $stmt->execute(['id'=>5]); //将结果集中的列绑定到变量上 $stmt->bindColumn('name', $name); $stmt->bindColumn('email', $email); //用列变量来遍历结果集 while ($stmt->fetch(PDO::FETCH_BOUND)) { echo '姓名: ',$name, ', 邮箱: ', $email, '<br>'; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
问答1:pdo的优势?
1.预处理语句可避免sql注入
2.pdo可以使用相同的sql语句执行不同的数据库
问答2:获取结果集记录数量的正确方式是什么?
获取结果集有三种方法,分为fetch() tchColumn() fetchAll()
fetch()方法
fetch()方法用于获取结果集的下一行
在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,并且应用while()语句和fetch()方法完成数据的循环输出
fetchAll()方法
fetchAll()方法是为了获取结果集的所有行,其返回值是一个包含结果集中所有数据的二进制数组
fetchColumn()方法
fetchColumn()方法获取结果集中下一行指定列的值
通过fetchColumn()方法获取结果集中下一行中指定列的值。