PDO对象方法的使用详细介绍(一)

<span style="font-size:18px;"><?php

一:插入语句  

 try{
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }

    //执行SQL语句 exec() query()  prepare()
    //一是有结果集的query(), 执行select语句
    //exec()用来执行有影响行数的,update, delete insert, other
    //exec()返回的是影响的行数
    echo "影响的行数".$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");

    //设置错误报告模式

二:设置错误模式-默认模式

    try{
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }

    //执行SQL语句 exec() query()  prepare()
    //一是有结果集的query(), 执行select语句
    //exec()用来执行有影响行数的,update, delete insert, other
    //exec()返回的是影响的行数
    $affected_rows=$pdo->exec("insert into shops(name, price, num, desn) values('aa', '12.1', '10', 'good')");

    //设置错误报告模式 ERRMODE_SILENT 0   ERRMODE_WARNING  1    ERRMODE_EXCEPTION 2

    if(!$affected_rows){   //默认模式,如果自己不懈 默认模式sql有问题什么都不会提示
        echo $pdo->errorCode()."<br>";//错误代码
        print_r($pdo->errorInfo());      //错误的详细信息
    }else{
        echo "执行成功!";
    }

三:设置警告模式

try{
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_WARNING);//sql执行错误,设置成警告模式
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }

    //执行SQL语句 exec() query()  prepare()
    //一是有结果集的query(), 执行select语句
    //exec()用来执行有影响行数的,update, delete insert, other
    //exec()返回的是影响的行数
    $affected_rows=$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");

    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING

    print_r($pdo->errorInfo());

四:PDO异常模式 ---推荐使用

    try{
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);//pdo推荐使用模式 ----异常模式
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }

    //执行SQL语句 exec() query()  prepare()
    //一是有结果集的query(), 执行select语句
    //exec()用来执行有影响行数的,update, delete insert, other
    //exec()返回的是影响的行数
    try{
        $affected_rows=$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");
    }catch(PDOException $e){
        echo $e->getMessage();//设置成警告模式的话就会走到这里
    }
    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING

    五:select语句,只有查询用query

try{
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }

    //执行SQL语句 exec() query()  prepare()
    //一是有结果集的query(), 执行select语句
    //exec()用来执行有影响行数的,update, delete insert, other
    //exec()返回的是影响的行数
    try{
        $stmt=$pdo->query("select * from shops");

        foreach($stmt as $row){
            print_r($row);
            echo '<br>';
        }

    }catch(PDOException $e){
        echo $e->getMessage();
    }
    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING

六:PDO事务处理

try{
        //PDO::ATTR_AUTOCOMMIT=>0 数据库的自动提交先关掉(事物)
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456", array(PDO::ATTR_AUTOCOMMIT=>0));
        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }

    //执行SQL语句 exec() query()  prepare()
    //一是有结果集的query(), 执行select语句
    //exec()用来执行有影响行数的,update, delete insert, other
    //exec()返回的是影响的行数
    /*
     *
     * 事务处理
     *
     *   张三从李四那里买了一台 2000 元的电脑
     *
     *     从张三帐号中扣出 2000元
     *
     *     向李四账号中加入 2000元
     *
     *     从商品表中减少一台电脑
     *
     *     MyIsAM不支持事物处理,速度快  ****InnoDB支持事物处理,但速度吗
     *
     */
    单条语句别用事物
    try{
        $pdo->beginTransaction();//开启事物

        $price=500;

        $sql="update zhanghao set price=price-{$price} where id=1";

        $affected_rows=$pdo->exec($sql);

        if(!$affected_rows)
            throw new PDOException("张三转出失败");//如果执行错误手动抛出一个异常

        //比如数据库id只有  1,2 故意写3不存在的数据也会说执行成功,所以手动抛出个异常信息
        $sql="update zhanghao set price=price+{$price} where id=3";   

        $affected_rows=$pdo->exec($sql);

        if(!$affected_rows)
            throw new PDOException("向李四转入失败");//手动抛出一个异常    PDOException函数

        echo "交易成功!";
        $pdo->commit();
    }catch(PDOException $e){
        echo $e->getMessage();
        $pdo->rollback();//如果上面2个UODATE语句有问题就回滚
    }

    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//最后执行在吧自动提交模式在开启,否则数据看到不没执行类似缓存效果

    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING

</span>
时间: 2024-10-03 13:38:48

PDO对象方法的使用详细介绍(一)的相关文章

黑马程序员 07-OC的对象方法

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— OC中的方法分为对象方法和类方法,这里介绍对象方法. 1.对象方法 规则:1.以减号 - 开头; 2.所有数据类型(返回值.参数)都必须写在小括号()里面,而且只有数据类型可以写在小括号()里面; 3.方法名遵循驼峰原则; 4.如果没有参数,方法名后面什么都不写,例如 -(void)lookMyPhone; 5.一个参数对应一个冒号:,冒号:也是方法名的一部分; 例如:-(void)sendMessage:

3D Mesh详细介绍免费下载地址使用方法

3D Mesh 是基于对象的软件开发工具包,提供了完全可配置的曲面和实体网格划分能力.该组件针对大部分计算机辅助工程(CAE)前处理的需求进行了优化,包括结构分析.热传递.计算流体动力学和电磁设计自动化(EDA).3D Mes其他h 提供了曲线.曲面(三角形和四边形)和实体(四面体)自动网格生成.线程安全组件使多线程应用程序可以利用多核硬件平台的优势,提供卓越的性能. 3D Mesh 包括一个与 3D AC其他IS Modeler 和 HOOPS 3D Application Framework

【转】JSP内置对象详细介绍(下)

第四个问题:Servlet的生命周期是什么呢? Servlet的生命周期,简单的概括分为四步:servlet类加载->实例化->服务->销毁.Servlet实例化的步骤: 1.Servlet容器启动时:读取Web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法. 2.在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会 判断内存中是否

【转】JSP内置对象详细介绍(上)

第一个问题: JSP有多少类内置对象? 要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握.主要有九个 内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象. 第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢? (1)application对象:javax.servlet.ServletContext

WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍

这篇文章主要介绍了WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍,WQL是指Windows管理规范查询语言,需要的朋友可以参考下 WQL就是WMI中的查询语言,WQL的全称是WMI Query Language,简称为WQL,翻译成中文好像可以成为Windows管理规范查询语言.熟悉SQL语言的朋友会感觉它和SQL非常相似. WQL其实非常简单,它有如下特点:1.每个WQL语句必须以SELECT开始:2.SELECT后跟你需要查询的属性名(我刚才对应SQL将其称之为字段名

JSP内置对象详细介绍(上)&lt;转载&gt;

第一个问题: JSP有多少类内置对象? 要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握.主要有九个 内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象. 第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢? (1)application对象:javax.servlet.ServletContext

WP移动设备压缩与解压控件Xceed Zip for .NET Compact Framework控件下载及详细介绍使用方法

Xceed Zip for .NET Compact Framework 控件是一款健全的文件压缩和解压缩控件,提供了灵活的ZIP.gZip.流压缩,分割和合并ZIP,创建自定义解压文件. 具体功能: 完全支持.NET Compact Framework 2.0以及以上 100%可管理的代码,由C#编写,面向对象设计 支持在硬盘.内存.FTP站点里创建新的ZIP文件,或者更新存在的ZIP文件 完全兼容WinZip12,支持LZMA算法 支持Zip64 Zip文件格式,对文件大小没有限制 支持从硬

【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法

原始地址:http://blog.csdn.net/yangyu20121224/article/category/1431917/1 由于TabActivity在Android4.0以后已经被完全弃用,那么我就不再浪费口水继续讲解它了,取而代之的是Fragment.Fragment是Android3.0新增的概念,Fragment翻译成中文是碎片的意思,不过却和Activity十分的相似,这一篇我花大量的篇幅来详细的讲解Fragment的介绍和使用方法. 一.Fragment的基础知识介绍  

PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入

1.安装 PDO 数据库抽象层 PDO - PHP Data Object 扩展类库为 PHP 访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,针对不同的数据库服务器使用特定的 PDO 驱动程序访问,如图: Windows 环境下 PHP 5.1 以上版本通过编辑 php.ini文件来安装 PDO:去掉 extension=php_pdo.dll 前面的 ; 如果使用的数据库是 MySQL ,在 php.ini 文件中加载 MySQL 的 PDO 驱动: 添加 exten