Blogger Information
Blog 21
fans 0
comment 0
visits 18552
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQLi和PDO/连接数据库/新增数据/更新数据/删除数据/查询数据—2018年9月6日01时10分
耗子的博客
Original
741 people have browsed it

2. 问答: PDO 的优势

PDO是 PHP 数据 对象,是PHP操作所有数据库的抽象层,提供了一个统一的访问接口

PDO简单,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。


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

        如果需要获取汇总数据需要使用以下方式fetchColumn,SQL使用COUNT(*)


实例

<?php
header("Content-Type: text/html; charset=utf-8");

//连接数据库
require 'db.php';





//预处理查询

$sql="SELECT `id`,`name`,`salary` FROM `user` 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) {
        //遍历过结果
        //fetch()
        while ($stmt->fetch()) {
            echo '<p>当前的id是:' . $id . '  名称是: ' . $name . '工资是: ' . $salary . '</p>';
        }

    } else {
        echo '当前表没有数据';
    }
}
else {
    //返回SQL语句的出错信息
    die($stmt->errno.'---'.$stmt->error);
}



//关闭预处理对象
$stmt->close();

//关闭连接
$mysqli->close();

?>

运行实例 »

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

实例3. 编程:PDO 连接数据库

<?php
/**
 * PDO是PHP数据对象,是PHP操作所有数据库的抽象层,提供了一个统一的访问接口
 *
 */

//$dsn:数据源,设置数据库类型,数据库服务器和默认数据库
$dsn='mysql:host=127.0.0.1;dbname=php';
$user='root';
$password='root';

//$dsn="sqlsrv:Server=127.0.0.1,1433;Database=PHP";
//$user='sa';
//$password='';


try{
$pdo=new PDO($dsn,$user,$password);
//echo '<h2>连接成功</h2>';
}
catch (PDOException $e)
{
    die('Connect ERROR!:'.$e->getMessage());
}



//关闭连接
$pdo=null;
//unset($pdo);

运行实例 »

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

实例4. 编程:PDO新增数据

<?php
/**
 * 新增数据
 */

//1-连接数据库

//$pdo=new PDO('sqlsrv:Server=127.0.0.1,1433;Database=PHP','sa','');//SQL连接方式

$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//2-准备SQL语句,占位符不们不用?,用"命名占位符"
$sql="INSERT `user` SET `name`= :name , `email`=:email , `password` = sha1(:password)";
//echo $stmt->queryString;die();//输出检测SQL语句

//3-创建预处理对象
$stmt=$pdo->prepare($sql);




//4-设置参数

$data=['name'=>'何生','email'=>'he@bonsaii.com','password'=>'123456'];//定义数据组

//5-执行添加

$stmt->execute($data);
echo '<h2>成功的添加了'.$stmt->rowCount().'条记录!</h2>';




//关闭pdo
unset($pdo);

//关闭连接
$pdo=null;

运行实例 »

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

实例5.编程: PDO更新数据

<?php
/**
 *更新数据
 */

//1-连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//2-准备SQL语句,占位符不们不用?,用"命名占位符"
$sql="UPDATE  `user` SET `name`= :name , `email`=:email  WHERE `id`=:id";


//3-创建预处理对象
$stmt=$pdo->prepare($sql);




//4-绑定参数
//$data=['name'=>'he','email'=>'hh@php.com','id'=>140];


if ($stmt->execute(['name'=>'he','email'=>'hh@php.com','id'=>140]))
{
//返回受影响的行

    echo '<h2>更新成功了:'.$stmt->rowCount().'行!</h2>';



}
else{
    echo '<h2>更新失败</h2>';
    print_r($stmt->errorInfo());
    die();
}

//关闭pdo
unset($pdo);

//关闭连接
$pdo=null;

运行实例 »

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

实例6. 编程: PDO 删除数据

<?php
/**
 * 删除数据
 */

//1-连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//2-准备SQL语句,占位符不们不用?,用"命名占位符"
$sql="DELETE FROM  `user` WHERE `id`=:id";


//3-创建预处理对象
$stmt=$pdo->prepare($sql);



if ($stmt->execute(['id'=>32]))
{
//返回受影响的行
    echo '<h2>删除成功了:'.$stmt->rowCount().'行!</h2>';
}
else{
    echo '<h2>删除失败</h2>';
    print_r($stmt->errorInfo());
    die();
}

//关闭pdo
unset($pdo);

//关闭连接
$pdo=null;

运行实例 »

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

实例7. 编程:PDO查询数据

<?php
/**
 * 查询数据
 */

//1-连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//2-准备SQL语句,占位符不们不用?,用"命名占位符"
$sql="SELECT `user`,`name`,`email` FROM `user` WHERE `id`<=:id";


//3-创建预处理对象
$stmt=$pdo->prepare($sql);

if ($stmt->execute(['id'=>100]))
{
//返回数据


//
//    一次性取出
//    $rows=$stmt->fetchAll();
////    var_dump($rows);
//    foreach ($rows as $row)
//    {
//        echo 'user:'.$row['user'].'name:'.$row['name'].'email'.$row['email'].'<br>';
//    }

    while ( $row=$stmt->fetch(PDO::FETCH_ASSOC)){
        echo var_dump($row).'<br>';
    }
//    $row=$stmt->fetch(PDO::FETCH_ASSOC);//PDO::FETCH_ASSOC只取关联部分,默认输是取关联和索引
//    var_dump($row);





    echo '<h2>查询数据:'.$stmt->rowCount().'行!</h2>';
}
else{
    echo '<h2>查询失败</h2>';
    print_r($stmt->errorInfo());
    die();
}

//关闭pdo
unset($pdo);

//关闭连接
$pdo=null;

运行实例 »

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

实例7. 编程:PDO查询数据

<?php
/**
 * 将结果集绑定到变量上
 */

//1-连接数据库
    $pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
 //2-准备SQL语句,占位符不们不用?,用"命名占位符"
    $sql="SELECT `user`,`name`,`email` FROM `user` WHERE `id`<=:id";



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

    $stmt->execute(['id'=>100]);



    //将结果集绑定到变量:列与变量绑定
    $stmt->bindColumn('user',$user);
    $stmt->bindColumn('name',$name);
    $stmt->bindColumn('email',$email);


    //用列变量来遍历结果集:建议使用类常量,PDO::FETCH_BOUND
    while ($stmt->fetch(PDO::FETCH_BOUND)){
        echo '<h4>  用户 :'.$user.'  名称: '.$name.'  邮箱:  '.$email. '</h4>';
    }


//关闭pdo
unset($pdo);

//关闭连接
$pdo=null;

运行实例 »

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

实例7. 编程:PDO查询数据

<?php
/**
 * 查询数据的行数
 */

//1-连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//2-准备SQL语句,占位符不们不用?,用"命名占位符"
//$sql="SELECT `user`,`name`,`email` FROM `user` WHERE `id`<=:id";


////3-创建预处理对象
//$stmt=$pdo->prepare($sql);
//
//    if ($stmt->execute(['id'=>100])) {
////        echo $stmt->fetchColumn(1), '<br>';//获取第一行第一列的数据,默认不传值是0;如果指定2代表3列数据email,
//    }
        //如果需要获取汇总数据需要使用以下方式
        $stmt=$pdo->prepare('SELECT COUNT(*) FROM `user` WHERE `id`<=:id');
        $stmt->execute(['id'=>100]);
        echo '返回人数:'.$stmt->fetchColumn().'<hr>';



//    //返回数据
//    while ( $row=$stmt->fetch(PDO::FETCH_ASSOC))
//    {
//        echo var_dump($row).'<br>';
//    }
//    }



//关闭pdo
unset($pdo);

//关闭连接
$pdo=null;

运行实例 »

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





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

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


PDOStatement 类


$stmt->bindColumn : 绑定一列到一个 PHP 变量

$stmt->bindParam — 绑定一个参数到指定的变量名

$stmt->bindValue — 把一个值绑定到一个参数

$stmt->closeCursor — 关闭游标,使语句能再次被执行。

$stmt->columnCount — 返回结果集中的列数

$stmt->debugDumpParams — 打印一条 SQL 预处理命令

$stmt->errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE

$stmt->errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息

$stmt->execute — 执行一条预处理语句

$stmt->fetch — 从结果集中获取下一行

$stmt->fetchAll — 返回一个包含结果集中所有行的数组

$stmt->fetchColumn — 从结果集中的下一行返回单独的一列。

$stmt->fetchObject — 获取下一行并作为一个对象返回。

$stmt->getAttribute — 检索一个语句属性

$stmt->getColumnMeta — 返回结果集中一列的元数据

$stmt->nextRowset — 在一个多行集语句句柄中推进到下一个行集

$stmt->rowCount — 返回受上一个 SQL 语句影响的行数

$stmt->setAttribute — 设置一个语句属性

$stmt->setFetchMode — 为语句设置默认的获取



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