Blogger Information
Blog 39
fans 2
comment 2
visits 50590
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Mysqli与pdo操作数据库-2018年8月30号
fighting的博客
Original
716 people have browsed it

                                                                    Mysqli与pdo操作数据库

                                              时间:2018年8月30号                天气:多云

1.编程:MySQLi面向对象中的查询操作

实例

<?php
/**
 * 预处理查询
 */
require 'demo1.php';
$sql = 'SELECT * FROM `staff` WHERE `salary`>?;';
//创建预处理对象
$stmt = $conn->stmt_init();
//检测预处理·对象是否创建成功
if ($stmt->prepare($sql)){
    //参数·绑定
    $salary = 5000;
    $stmt->bind_param('i',$salary);
    //执行语句
    if ($stmt->execute()){
       //把执行结果放在缓冲区
        $stmt->store_result();
        //把结果集的列绑定到对象上区
        $stmt->bind_result($id,$name,$sex,$age,$salary);
        if ($stmt->num_rows>0) {
            while ($stmt->fetch()) {
                echo '<p>id:' . $id . '---姓名:' . $name . '---性别:' . $sex . '---年龄:' . $age . '---工资:' . $salary . '</p>';
            }
        }else{
                exit('<p>无数据显示</p>');

            }
            $stmt->free_result();
    }else{
        //执行阶段错误
        exit($stmt->errno.':'.$stmt->error);
    }
}else{
    //检测阶段错误
    exit($stmt->errno.':'.$stmt->error);
}
//释放语句,关闭连接
$stmt->close();
$conn->close();

运行实例 »

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

本机运行图

1.png

2. 问答: PDO 的优势

答:

(1) PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。

(2)PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

3. 编程:PDO 连接数据库

实例

<?php
/**
 * pdo方法连接数据库(php,date,object)
 */
header('Content-type:text/html;charset=utf-8');
$dsn = 'mysql:127.0.0.1; dbname=php';
$user = 'root';
$psw = 'root';
try{
    $sql = new PDO($dsn,$user,$psw);
    echo '恭喜你,连接成功!!!';
}catch (PDOException $e){
    echo 'connect error:'.$e->getMessage();

}

运行实例 »

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

本机运行图片:

1.png

4. 编程:PDO新增数据

实例

<?php
/**
 * pdo的增删查改
 */
header('Content-type:text/html;charset=utf-8');
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//$pdo = new PDO('mysql:127.0.0.1; dbname=php','root','root');

$sql = 'INSERT INTO `user` SET `name`=:name, `email`= :email, `password`= sha1(:password);';

$stmt= $pdo ->prepare($sql);

$date =['name'=>'科比','email'=>'kobe@qq.com','password'=>'123'];

$stmt->bindParam('name',$date['name'],PDO::PARAM_STR);
$stmt->bindParam('email',$date['email'],PDO::PARAM_STR);
$stmt->bindParam('password',$date['password'],PDO::PARAM_STR);

if ($stmt->execute()){
    if ($stmt->rowCount()>0){
        echo '成功的添加了'.$stmt->rowCount().'条数据';
    }
}else{
    echo '添加失败:';
    print_r($stmt->errorInfo());
    exit();
}

$stmt=null;
 $pdo=null;

运行实例 »

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

本机运行图片:

1.png

5.编程: PDO更新数据

实例

<?php
/**
 * update
 */
header('Content-type:text/html; charset=utf-8');

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql = 'UPDATE `user`SET `name`=:name WHERE `id`=:id';

$stmt = $pdo->prepare($sql);

//$name='老流氓';
//$id =3;
$stmt->execute(['name'=>'老流氓','id'=>3]);
echo '成功的更新了一条记录!!!';

运行实例 »

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

本机运行图片:

1.png

6. 编程: PDO 删除数据

实例

<?php
/**
 * pdo,delete
 */
header('Content-type:text/html;charset=utf-8');

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql ='DELETE FROM `user` where `id`=:id;';

$stmt = $pdo->prepare($sql);

$stmt->execute(['id'=>3]);
echo '成功的删除了一条记录';

运行实例 »

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


本机运行图片

1.png

7. 编程:PDO查询数据

实例

<?php
/**
 * pdo的预处理查询
 */
header('Content-type:text/html;charset=utf-8');

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql = 'SELECT * FROM `staff` WHERE `salary`>:salary;';

$stmt = $pdo->prepare($sql);

$stmt->execute(['salary'=>5000]);

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    //echo'<pre>'.var_export($row,true);
    echo var_export($row).'<hr>';

}

运行实例 »

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

1.png8. 问答: 获取结果集记录数量的正确方式是什么?

     对于大多数数据库,PDOStatement::rowCount() 不能返回受一条 SELECT 语句影响的行数。替代的方法是,使用 PDO::query() 来发出一条和原打算中的SELECT语句有相同条件表达式的 SELECT COUNT(*) 语句,然后用 PDOStatement::fetchColumn() 来取得返回的行数。这样应用程序才能正确执行。








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
Author's latest blog post