博客列表 >Mysqli的查询和PDO的连接和增删改查—8月30日作业

Mysqli的查询和PDO的连接和增删改查—8月30日作业

v1per911的博客
v1per911的博客原创
2018年09月11日 19:45:02603浏览

实例

<?php
/**
 * 1.编程:MySQLi面向对象中的查询操作
 * 2. 问答: PDO 的优势
 * 3. 编程:PDO 连接数据库
 * 4. 编程:PDO新增数据
 * 5. 编程: PDO更新数据
 * 6. 编程: PDO 删除数据
 * 7. 编程:PDO查询数据
 * 8. 问答: 获取结果集记录数量的正确方式是什么?
 */
/创建数据连接属性
$db_host = '127.0.0.1';//数据库地址
$db_user = 'root';//数据库用户名
$db_pass = '';//数据库密码
$db_name = 'php';//数据库名称
$db_charset = 'utf8';//数据库文字编码
//连接数据库
$mysqli = new mysqli($db_host,$db_user,$db_pass,$db_name);//创建连接数据库对象,并连接数据库
$mysqli->set_charset($db_charset);//设置数据库文字编码为UTF8
if ($mysqli->connect_errno){//判断连接错误代码,如果不为空,则输出错误代码和原因
    echo '连接失败!错误代码'.$mysqli->connect_errno.':'.$mysqli->connect_error;
}else{
//    echo '连接成功。';
}

$sql = "SELECT `staff_id`,`name`,`salary` FROM `staff` WHERE `salary`>?;";//创建SQL语句,在staff表中查询条件为salary大于某个值的记录,并输出staff_id等这些数据

$stmt = $mysqli->stmt_init();//初始化对象

if ($stmt->prepare($sql)){//预处理SQL语句
    $stmt->bind_param('i',$salary);//把变量绑定到参数上。
    $salary = 4500;
    if ($stmt->execute()){//执行SQL语句,如果成功
        $stmt->store_result();//把结果放到缓存区
        $stmt->bind_result($staff_id,$name,$salary);//把结果集的列,也就是标题绑定到变量上
        //先判断有没有符合要求的数据,如果没有就不遍历。
        if($stmt->num_rows>0){
            //fetch()每次获取一条记录,并将指针下移
            while($stmt->fetch()){
                echo 'staff_id是:'.$staff_id.'名字是'.$name.',工资是'.$salary.'<br>';
            }
        }else{
            exit('没有查询到有关数据。');
        }
    }else{
        exit($stmt->errno.$stmt->error);
    }
}else{
    exit($stmt->errno.$stmt->error);
}

/**
 * 查询逻辑
 * 1、连接服务器,成功:进行下一任务,失败返回连接失败。$mysqli->connect_errno,$mysqli->connect_error.
 * 2、创建一个SQL语句,用于查询、新增、删除、更新等操作用,并赋值给一个变量,针对要处理的数据,使用占位符。查询使用SELECT
 * 3、预处理一个对象。$stmt->prepare(SQL语句)
 * 4、判断预处理是否成功,失败则返回错误代码及原因。$stmt->errno,$stmt->error
 * 5、绑定参数,将变量与SQL语句中要查询的字段(也就是数据库表中的列)绑定,将要查询的数据通过变量传入到SQL语句中。$stmt->bind_param()
 * 6、开始执行语句,失败则返回错误代码及原因。$stmt->errno,$stmt->error
 * 7、先将查询到的结果集,都临时保存到缓存区。$stmt-store_result
 * 8、将结果集中的内容,依次绑定到变量上,用以遍历$stmt->bind_reslut($var,$var,$var)
 * 9、判断结果集中有没有数据,如无,则直接输出结果。$stmt->num_cows()>0
 * 10、使用循环语句进行遍历,fetch()方法可以每次从结果集中获取一个记录,并将指针移至下一条记录,并输出结果。$stmt->fetch()
 */
<<<HEREDOC
问答: PDO 的优势:
PDO提供了一个统一的可以访问多类数据库的接口,作为一个访问数据库的抽象层,无论什么类型的数据库,都可以使用相同的函数和方法来访问。
HEREDOC;
//新增一个pdo连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php;charset=utf8','root','');

//插入数据
//准备一个SLQ语句
//$insert = "INSERT `user` SET `user_name`=:name,`email`=:email,`password`=sha1(:password)";
//
//$stmt = $pdo->prepare($insert);
//
////执行语句
//
//$stmt->execute(['name'=>'李宗伟','email'=>'huminda91@123.com','password'=>'dddss1123']);
//$stmt->execute(['name'=>'李丹','email'=>'huminda@123.com','password'=>'dddss112333']);
//$stmt->execute(['name'=>'林丹','email'=>'huminda92@123.com','password'=>'dddss11323']);
//$stmt->execute(['name'=>'安塞龙','email'=>'huminda95@123.com','password'=>'ddd3ss11123']);
//echo '添加了'.$stmt->rowCount().'条数据。';


//更新数据
//$update = "UPDATE `user` SET `password`=:password WHERE `user_id`=:id;";
//
//$stmt = $pdo->prepare($update);
//
//$stmt->execute(['id'=>23,'password'=>'jjjdddhhh']);
//echo '成功更新了'.$stmt->rowCount().'条数据。';

//删除数据
//$delete = "DELETE FROM `user` WHERE `user_id`=:id";
//
//$stmt = $pdo->prepare($delete);
//
//$stmt->execute(['id'=>24]);
//echo '成功删除了'.$stmt->rowCount().'条数据。';

//查询数据
//查询语句
$serch = "SELECT `email` ,`user_name`  FROM `user` WHERE `user_id`<:id;";
//获取复核条件的数据的数量
$serch_count = "SELECT COUNT(*)  FROM `user` WHERE `user_id`<:id;";

//首先准备获取数量的语句,并执行后输出
$stmt = $pdo->prepare($serch_count);
$stmt->execute(['id'=>26]);
echo '共查询到'.$stmt->fetchColumn().'条数据,分别是:<br>';

//重新准备语句,用于获取输出查询到的数据
$stmt = $pdo->prepare($serch);
$stmt->execute(['id'=>26]);
//将查询到的数据绑定到列上,以便于输出
$stmt->bindColumn('user_name',$name);
$stmt->bindColumn('email',$email);
//PDO::FETCH_BOUND以布尔值的形式返回结果,同时将获取的列值(如'user_name'、'email')赋给bindParam()方法中指定的变量($name、$email)。
while ($stmt->fetch(PDO::FETCH_BOUND)){
    echo '姓名: ',$name, ',  邮箱: ', $email, '<br>';
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议