博主信息
博文 39
粉丝 0
评论 0
访问量 37374
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PDO第二课:mysqli剩余的操作实例,pdo演示、创建和流程控制;本课程老师总结的虽简单,不多练习还是不行的 2018年8月30日 22:26
南通税企通马主任的博客
原创
1113人浏览过

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

a.增

实例

<?php

require 'sql.php';

$sql = "INSERT IGNORE `staff` SET `name`= ?, `salary`= ?";

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

$name = 'king';
$salary = 9800;
$stmt ->bind_param('si',$name,$salary);

if ($stmt ->execute()){
    if ($stmt ->affected_rows >0){
        echo '<br>成功的插入'.$stmt ->affected_rows. '条记录,新增记录的主键是'. $stmt ->insert_id;
    }else{
        echo '<br>没有新增记录';
    }
}else{
    exit($stmt ->errno. ':' .$stmt ->error);
}

$stmt ->close();

$mysqli ->close();

运行实例 »

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

实例

<?php

require 'sql.php';

$sql = "INSERT IGNORE `staff` SET `name` = ? , `salary` = ? ";

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

$data[] = ['name' =>'tony','salary' =>5800];
$data[] = ['name' =>'arthur','salary' =>15800];
$data[] = ['name' =>'kitty','salary' =>8800];

$stmt ->bind_param('si',$name,$salary);

foreach ($data as $staff){
    $name = $staff['name'];
    $salary = $staff['salary'];

    if ($stmt ->execute()){

    if ($stmt ->affected_rows >0){
        echo '<br>成功的新增'.  $stmt ->affected_rows . '条记录,新增记录的主键id是:' .$stmt ->insert_id;
    }else {
        echo '<br>没有新增记录';
    }
    }else ($stmt ->errno .':' . $stmt ->error);
}

$stmt ->close();

$mysqli ->close();

运行实例 »

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

b.改

实例

<?php

require 'sql.php';

$sql = "UPDATE `staff` SET `salary` = ? WHERE `id` = ?";

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

$salary = 8888;
$id = 21;
$stmt ->bind_param('ii',$salary,$id);

if ($stmt ->execute()){
    if ($stmt ->affected_rows >0){
        echo '<br>成功的更新' . $stmt ->affected_rows .'条记录';
    }else{
        echo '<br>没有更新记录';
    }
}else{
    exit($stmt ->errno . ':' .$stmt ->error);
}

$stmt ->close();

$mysqli ->close();

运行实例 »

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

c.删

实例

<?php

require 'sql.php';

$sql = "DELETE FROM `staff` WHERE `id` = ?";

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

$id = 19;
$stmt ->bind_param('i' ,$id);

if ($stmt ->execute()){
    if ($stmt ->affected_rows >0){
        echo '<br>成功的删除了' . $stmt ->affected_rows . '条记录';
    }else{
        echo '<br>删除记录不成功';
    }
}else{
    exit($stmt ->errno . ':' .$stmt ->error);
}

$stmt ->close();

$mysqli ->close();

运行实例 »

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

d.查

实例

<?php

require 'sql.php';

$sql = "SELECT `id`,`name`,`salary` FROM `staff` 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){

            while ($stmt ->fetch()){
                echo  '<p>id:'.$id.'---姓名:'.$name.'---工资:'.$salary.'</p>';
            }
        }else{
            exit('<p>当前表中无此数据</p>');
        }
        $stmt ->free_result();
    }else{
        exit($stmt ->errno .':'. $stmt->error);
    }
}else{
    exit($stmt ->errno .':'. $stmt ->error);
}

$stmt ->close();

$mysqli ->close();

运行实例 »

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



2、问答: PDO 的优势

第一个优势"简单",代码优化了,更优雅和精简!

第二个也是相比较mysqli最大的优势可以面向所有类型的数据库进行操作 ,简单且牛鼻!

3、编程:PDO 连接数据库

实例

<?php
echo '<meta charset="UTF-8">';
$dsn = 'mysql:host=127.0.0.1;dbname=php';
$user = 'root';
$pass = 'root';

try {
    $pdo = new PDO($dsn,$user,$pass);
}catch (PDOException $e){
    die('Connect ERROR! :'. $e ->getMessage());
}

$pdo = null;

运行实例 »

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

4、 编程:PDO新增数据

实例

<?php

echo '<meta charset="utf-8">';
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php',
    'root','root');

$stmt = $pdo->prepare("INSERT `user` SET `name`= :name,`email`= :email,`password`= sha1(:password)");

$stmt ->execute(['name'=>'zy','email'=>'zy@qq.cn','password'=>'123']);

echo '<h3>成功添加了'. $stmt->rowCount(). '条记录</h3>';

$stmt = null;

$pdo = null;

运行实例 »

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

5、编程: PDO更新数据

实例

<?php
echo '<meta charset="UTF-8">';

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

$sql = "UPDATE `user` SET `email` = :email WHERE `id` = :id";

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

$stmt ->execute(['email'=>'zy@php.cn','id'=>31]);
echo '<h3>成功更新了'. $stmt ->rowCount(). '条记录';

$stmt = null;

$pdo = null;

运行实例 »

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

6、编程: PDO 删除数据

实例

<?php
echo '<meta 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);

if ($stmt ->execute(['id' =>3])){
    echo '<h3>成功删除了' .$stmt ->rowCount() .'条记录';
}else{
    echo '<h3>删除失败</h3>';
    print_r($stmt ->errorInfo());
    exit();
}

$stmt = null;

$pdo = null;

运行实例 »

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

7、编程:PDO查询数据

实例查询1

<?php
echo '<meta charset="UTF-8">';

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

$sql = "SELECT `name`,`salary` FROM `staff` WHERE `id` < :id";

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

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

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    echo var_export($row),'<br>';
}

$stmt = null;

$pdo = null;

运行实例 »

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

实例查询二

<?php
echo '<meta charset="UTF-8">';

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

$sql = "SELECT count(*) FROM `staff` WHERE `salary` > :salary";

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

$stmt ->execute(['salary'=>6000]);
echo '<h3>工资大于6000的人数:'. $stmt ->fetchColumn();

$stmt = null;

$pdo = null;

运行实例 »

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

实例查询三

<?php
echo '<meta charset="UTF-8">';

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

$sql = "SELECT `name`,`salary` FROM `staff` WHERE `id`< :id";

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

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

$stmt ->bindColumn('name',$name);
$stmt ->bindColumn('salary',$salary);

while ($stmt ->fetch(PDO::FETCH_BOUND)){
    echo '姓名:'.$name.'|'.'工资:'.$salary.'<br>';
}

$stmt = null;
$pdo = null;

运行实例 »

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


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

首先如果是泛查询 , sql的SELECT后面要跟count(*) , 否则有可能会得不到数据;

其次如果是确定的列值 , 则需要将结果集(列)绑定到变量中以PDO::FETCH_BOUND为参数将结果遍历出来;

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学