Blogger Information
Blog 33
fans 0
comment 2
visits 37340
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用mysqli面向对象操作数据库,使用pdo操作数据库2018/8/30
cxw的博客
Original
887 people have browsed it

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();

       


Correction status:Uncorrected

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