• PDO(20161107)


    PDO

    MySQLI是针对MySQL数据库扩展的,是专门访问MySQL数据库的

    PDO是一个数据库访问的一个扩展类,通过一个类访问多个数据库,就是一个数据访问抽象层,把类结合在一块了

    可以访问别的数据库,是数据访问的抽象层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    
    <?php
    //PDO
    //1.访问不同的数据库
    //2.自带事务功能.通过回滚操作可以把操作内容恢复
    //3.防止SQL注入
    
    //PDO怎么用
    /*//1.造对象
    $dsn = "mysql:dbname=mydb;host=localhost";"驱动名:数据库名称;服务器地址"
    $pdo = new PDO($dsn,"root","123");
    
    //2.写SQL语句
    $sql = "update nation set name='兽族' where code='n013'";
    
    //3.执行SQL语句
    //$r = $pdo->query($sql);执行查询之后返回了另外一个对象,需要通过另外一个对象去找
    $r = $pdo->exec($sql);执行的是增删改*/
    
    //事务功能    要么全执行成功,要么全执行失败
    //造对象
    $dsn = "mysql:dbname=1016;host=localhost";
    $pdo = new PDO($dsn,"root","数据库密码");
    
    //设置异常模式,如果出现错误,抛一个异常出来
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);/*设置属性(名称,值)    注意不要加双引号*/
    
    
    //写SQL语句
    $sql1 = "insert into nation values('n007','朝鲜族')";
    $sql2 = "insert into nation values('n008','彝族')";
    
    //启动事务,执行两条SQL语句,最终提交给事务,然后事务判断有没有问题,要是有问题就抛出问题
    try//试着执行
    {
        //启动事务
        $pdo->beginTransaction();
        
        $pdo->exec($sql1);
        $pdo->exec($sql2);
        
        //提交事务
        $pdo->commit();
    }
    catch/*抓住*/(PDOException $e)//PDO抛出的一个类型
    {
        //$e->getMessage();显示错误信息
        //回滚
        $pdo->rollBack();
    }
    
    /*final//最终执行的内容,出不出错都执行,一般写关闭代码(PHP不常见)
    {
            
    }*/
    
    
    
    
    ?>
    
    
    
    
    
    
    </body>
    </html>
    1107test.php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <?php
    
    //造对象
    $dsn = "mysql:dbname=1016;host=localhost";
    $pdo = new PDO($dsn,"root","数据库密码");
    
    //写SQL语句,预处理语句
    $sql = "select * from nation";
    
    //准备执行
    $st = $pdo->prepare($sql);
    
    //执行
    $st->execute();
    
    //读数据    fetch 一行或fetch all 全部
    var_dump($st->fetchAll(PDO::FETCH_ASSOC));
    
    
    ?>
    </body>
    </html>
    1107chaxun.php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    
    <?php
    
    //造对象
    $dsn = "mysql:dbname=1016;host=localhost";
    $pdo = new PDO($dsn,"root","数据库密码");
    
    //写SQL语句,预处理语句,使用name占位(名称占位) 前面要加冒号
    $sql = "insert into nation values(:code,:name)";
    
    //准备执行
    $st = $pdo->prepare($sql);
    
    //绑定参数
    /*$st->bindParam(":code",$code,PDO::PARAM_STR);
    $st->bindParam(":name",$name,PDO::PARAM_STR);
    
    $code="n011";
    $name="土家族";*/
    //用关联数组
    $attr = array("code"=>"n012","name"=>"布依族");
    
    //执行
    $st->execute($attr);
    
    //总结:name占位,用的关联数组;?占位,用的索引数组
    
    ?>
    </body>
    </html>
    1107namezhanwei.php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <?php
    
    //造对象
    $dsn = "mysql:dbname=1016;host=localhost";
    $pdo = new PDO($dsn,"root","数据库密码");
    
    //写SQL语句,预处理语句    用问号占位置
    $sql = "insert into nation values(?,?)";
    
    //准备SQL语句,返回statement对象 用变量接收返回的statement对象
    $st = $pdo->prepare($sql);
    
    //绑定参数    bind绑 Param参数    用问号站位的从1开始索引
    /* 简化前
    $st->bindParam(1,$code);
    $st->bindParam(2,$name);
    //可以在后面赋值也可以在前面
    $code="n022";
    $name="矮人族";*/
    // 简化后  array数组
    $attr = array("n010","蒙古族");
    
    //提交执行,不用给SQL语句了,已经传过去了
    var_dump($st->execute($attr));
    
    //execute 成功返回true 失败返回false
    //预处理语句里面用?占位的,给数组的时候要给索引数组,顺序要对应起来
    
    
    
    
    
    
    ?>
    </body>
    </html>
    1107sqlzhuru.php
  • 相关阅读:
    JQueryEasyUI学习笔记(五)
    创建文本后,写入文本,报“正由另一进程使用,因此该进程无法访问该文件”
    Ogre wiki Application 运行我们的第一个程序
    我想在年前找一份工作
    C#+XAML的Metro应用开发入门(二)
    C#+XAML的Metro应用开发入门(一)
    疑难问题解决备忘录(1)——LAMP环境下WordPress无法发现themes目录下的主题问题解决
    C#+XAML的Metro应用开发入门(一)
    C#+XAML的Metro应用开发入门(三)
    Struts 2+Spring 3+Hibernate 3.3 在MyEclipse 10环境下的整合配置
  • 原文地址:https://www.cnblogs.com/zsczsc/p/6120153.html
Copyright © 2020-2023  润新知