博客列表 >使用mysqli面向对象操作数据库,使用pdo操作数据库2018/8/30

使用mysqli面向对象操作数据库,使用pdo操作数据库2018/8/30

cxw的博客
cxw的博客原创
2018年09月02日 12:23:56884浏览

1,通过今天的学习,我懂得了,通过mysqli面向对象对数据库进行操作,同时也懂得了pdo对数据库的增删改查操作,还明白了pdo和mysqli的区别,以下是我的代码:

1,使用pdo进行插入(复杂)

实例

<meta charset="UTF-8">
<?php
/**
 * pdo链接查询数据库,并且执行增删改查功能
 */
//创建变量
$name='小强';
$age='21';
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql="INSERT  IGNORE `show` SET  name=:name,age=:age";

//创建预定义对象
$stmt=$pdo->prepare($sql);

//绑定参数
$data=['name'=>$name,'age'=>$age];

//两种方法 1,
$stmt->bindParam(':name',$data['name'],PDO::PARAM_STR);
$stmt->bindParam(':age',$data['age'],PDO::PARAM_STR);

if ($stmt->execute())  //执行返回true or false
{
    echo  '受影响的行数:'.$stmt->rowCount();
}else
{
   var_dump($stmt->errorInfo());
}
//释放pdo
$pdo=null;
运行实例 »

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

2,使用pdo进行插入(简化)

实例

<meta charset="UTF-8">
<?php
/**
 * pdo链接查询数据库,并且执行增删改查功能
 */

//创建变量
$name='小军';
$age='28';

//1,连接数据库

$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$sql="INSERT  IGNORE `show` SET  name=:name,age=:age";

//创建预定义对象
$stmt=$pdo->prepare($sql);

//绑定参数
$data=['name'=>$name,'age'=>$age];

////两种方法 2,

if ($stmt->execute($data))  //执行返回true or false
{
    echo  '受影响的行数:'.$stmt->rowCount();
}else
{
    var_dump($stmt->errorInfo());
}
//释放pdo
unset($pdo);

运行实例 »

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

3,使用pdo更新

实例

<meta charset="UTF-8">
<?php
/**
 *更新
 */

//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" UPDATE  `show` set name=:name where id=:id";

//创建预定义对象
$stmt=$pdo->prepare($sql);

if ($stmt->execute(['name'=>'小铁','id'=>29]))  //执行返回true or false
{
    echo  '受影响的行数:'.$stmt->rowCount();
}else
{
    var_dump($stmt->errorInfo());
}
//释放pdo
$pdo=null;
运行实例 »

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

4,使用pdo删除

实例

<?php
/**
 *删除
 */

//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" DELETE  FROM  `show` where id=:id";

//创建预定义对象
$stmt=$pdo->prepare($sql);

if ($stmt->execute(['id'=>29]))  //执行返回true or false
{
    echo  '受影响的行数:'.$stmt->rowCount();
}else
{
    var_dump($stmt->errorInfo());
}
//释放pdo
$pdo=null;
运行实例 »

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

5,使用pdo查询所有信息

实例

<meta charset="UTF-8">
<?php
/**
 * 查询
 */

//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" select *   FROM  `show` where id>:id";

//创建预定义对象
$stmt=$pdo->prepare($sql);

if ($stmt->execute(['id'=>0]))
{

    //一次性去除,不建议,内存爆炸
//    $rows=$stmt->fetchAll();
//    foreach ($rows as $row)
//    {
//        echo  '姓名:'.$row['name']."~~年龄:".$row['age'].'<br>';
//    }

    while ($row=$stmt->fetch(PDO::FETCH_ASSOC))
    {
        echo  '姓名:'.$row['name']."~~年龄:".$row['age'].'<br>';
    }

运行实例 »

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

6,使用pdo查询字段信息

实例

<meta charset="UTF-8">
<?php
/**
 * 将结果集绑定到变量
 */
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" select  name   FROM  `show` where id>:id";


//创建预定义对象
$stmt=$pdo->prepare($sql);

//将查询变量返回结果绑定给变量
$stmt->bindColumn('name',$name);
if ($stmt->execute(['id'=>10]))
{

 while ($stmt->fetch(PDO::FETCH_BOUND))
 {
     echo  $name.'<br>';
 }

 //select *from 通过rowcount()获取条数
    //select count(*) 通过 fetchColumn()获取

}else
{
    echo  '查不到数据';

}

运行实例 »

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

7,使用pdo查询数量

实例

<?php
/**
 * 获取某行某列
 *
 */

//select *from 通过rowcount()获取条数 不建议,不跨平台
//select count(*) 通过 fetchColumn()获取

//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
//$sql=" select *  FROM  `show` where id>:id";
$sql=" select count(*) FROM  `show` where id>:id";
//创建预定义对象
$stmt=$pdo->prepare($sql);

if ($stmt->execute(['id'=>10]))
{
    echo  $stmt->fetchColumn();
}
运行实例 »

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

8,使用mysqli 完成查询

实例

<meta charset="UTF-8">
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/8/31
 * Time: 13:17
 */
//连接数据库
$mysqli = mysqli_connect("127.0.0.1", "root", "root", "test");

//创建sql语句
$sql="select * from test where  age>?";

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
//创建预处理对象
  $stmt=$mysqli->stmt_init();
if($stmt->prepare($sql))
{
    $stmt->bind_param('i',$age);
    $age=1;
    if($stmt->execute())
    {
        //将结果放到缓存中
        $stmt->store_result();
        //将列绑定到变量上
        $stmt->bind_result($id,$name,$age);
        //判断数据是否查出
        if($stmt->num_rows>0)
        {
            while($reult=$stmt->fetch())
            {
                echo '<p>id:'.$id.'---姓名:' .$name.'---年龄:'.$age.'</p>';
            }
        }else
        {
            echo '没有数据';
        }
        //释放结果集
        $stmt->free_result();
    }else
    {
        echo  $stmt->errno.":".$stmt->error;
    }
}
//注销stmt对象
$stmt->close();
$mysqli->close();
运行实例 »

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

手抄图片
pdo.jpg

总结:

总体流程

pdo:

1,数据库连接  $pdo=new PDO(DSN,USER,PASSWORD,CHARSET);

2,创建sql语句 $sql='';

3,绑定参数 bindParam(':name',$data['name'],PDO::PARAM_STR); 不是必须

3创建预编译对象  $pdo->prepare($sql);

4,执行 $pdo->prepare($sql)->execute(); 返回ture or false

5,如果增删改,则用 rowcount()返回受影响行数,查询用fetchColoum(),不建议用rowCount();

mysqli

1,$mysqli = new mysqli($db_host,$db_user,$db_pass, $db_name);

2,第二步和pdo一样

3,绑定参数用bindparam(参数类型,参数);

4,$stmt->execute() 执行

5,如果增删改 用 affected_rows返回受影响的行数,增加可以 用 insert_id 返回增加的id

6,如果查询 执行第四步后 则需要

 a,获取结果集并放到缓存区  $stmt->store_result();

 b,将结果集中的列绑定到变量上  $stmt->bind_result($id,$name, $salary);

 c,结果集是否不为,只有不为空的时候才遍历 $stmt->num_rows > 0

 d while ($stmt->fetch())

7,释放结果集 $stmt->free_result();

       


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