Blogger Information
Blog 11
fans 0
comment 0
visits 6756
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Mysqli的查询和PDO的连接和增删改查—8月30日作业
v1per911的博客
Original
602 people have browsed it

实例

<?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>';
}

运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments