php pdo对象使用详解: 连接数据库与exec方法

要使用pdo,首先需要开启pdo扩展,我这里已经开启了mysql的pdo扩展

[email protected]:~$ php -m | grep pdo
pdo_mysql
[email protected]:~$ 

1,连接数据库

mysql> show create database shop \G;
*************************** 1. row ***************************
       Database: shop
Create Database: CREATE DATABASE `shop` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.00 sec)
mysql> show create table account \G;
*************************** 1. row ***************************
       Table: account
Create Table: CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) CHARACTER SET latin1 NOT NULL,
  `user_pwd` varchar(40) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
try{
        $dsn = ‘mysql:host=localhost;dbname=shop‘;
        $username = ‘root‘;
        $pwd = ‘root‘;
        $pdo = new PDO( $dsn, $username, $pwd );
        var_dump( $pdo );
    }catch( PDOException $e ) {
        echo $e->getMessage();
    }

>上面为参数形式连接数据库

>uri形式连接数据库

dsn.txt

mysql:host=localhost;dbname=shop;
try{
        $dsn = ‘uri:file:///home/ghostwu/php/php2/pdo/dsn.txt‘;
        $username = ‘root‘;
        $pwd = ‘root‘;
        $pdo = new PDO( $dsn, $username, $pwd );
        var_dump( $pdo );
    }catch( PDOException $e ) {
        echo $e->getMessage();
    }

还有一种是php.ini中写dsn连接信息,不太推荐使用

2,exec执行一条sql语句,返回值为受影响的行数,如果没有受影响的行数,返回值为0,该方法对select语句无效

try{
        $dsn = ‘mysql:host=localhost;dbname=shop‘;
        $username = ‘root‘;
        $pwd = ‘root‘;
        $pdo = new PDO( $dsn, $username, $pwd );

        $sql =<<< SQL
        create table if not exists user(
        id int unsigned not null auto_increment,
        username varchar( 20 ) not null unique,
        pwd char( 32 ) not null,
        email varchar( 30 ) not null,
        primary key( id )
        )engine myisam;
SQL;
        $res = $pdo->exec( $sql );
        var_dump( $res );
    }catch( PDOException $e ) {
        echo $e->getMessage();
    }

3,执行insert语句

$insertUserSql = "insert into user( username, pwd, email ) values( ‘ghostwu‘," . "‘" . md5( ‘ghostwu‘ )  . "‘" . ",‘[email protected]‘)";
        $res = $pdo->exec( $insertUserSql );
        var_dump( $res );

4,一次性执行多条sql语句

 1 try{
 2         $dsn = ‘mysql:host=localhost;dbname=shop‘;
 3         $username = ‘root‘;
 4         $pwd = ‘root‘;
 5         $pdo = new PDO( $dsn, $username, $pwd );
 6         $bajie = md5( ‘bajie‘ );
 7         $wukong = md5( ‘wukong‘ );
 8         $tangsheng = md5( ‘tangsheng‘ );
 9         $insertUserSql =<<<EOF
10         insert into user( username, pwd, email ) values( ‘wukong‘, ‘$wukong‘, ‘[email protected]‘ ),( ‘bajie‘, ‘$bajie‘,‘[email protected]‘ ),( ‘tangsheng‘, ‘$tangsheng‘,‘[email protected]‘ );
11 EOF;
12         $res = $pdo->exec( $insertUserSql );
13         var_dump( $res );
14     }catch( PDOException $e ) {
15         echo $e->getMessage();
16     }

5,获取最后一次插入数据的自增id

    try{
        $dsn = ‘mysql:host=localhost;dbname=shop‘;
        $username = ‘root‘;
        $pwd = ‘root‘;
        $pdo = new PDO( $dsn, $username, $pwd );
        $insertUserSql = "insert into user( username, pwd, email ) values( ‘zhanzhao‘," . "‘" . md5(‘zhanzhao‘ ) . "‘,‘[email protected]‘)";
        echo $insertUserSql . PHP_EOL;
        $res = $pdo->exec( $insertUserSql );
        echo $pdo->lastInsertId() . PHP_EOL;
    }catch( PDOException $e ) {
        echo $e->getMessage();
    }

6,执行delete语句

try{
        $pdo = new PDO( "mysql:host=localhost;dbname=shop", ‘root‘, ‘root‘ );
        $sql = "delete from user where id = 1";
        $res = $pdo->exec( $sql );
        var_dump( $res );
    }catch( PDOException $e ) {
        echo $e->getMessage();
    }

原文地址:https://www.cnblogs.com/ghostwu/p/8976291.html

时间: 2024-10-16 07:01:13

php pdo对象使用详解: 连接数据库与exec方法的相关文章

php中的PDO函数库详解

PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效.目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择. PDO中包含三个预定义的类 PDO中包含三个预定义的类,它们分别是 PDO.PDOStatement 和 PDOException. 一.PDO PDO->beginTransaction(

笔记-【3】-event事件对象的详解!

event事件对象:是指当前对象发生的事件的一些详细的信息在event这个对象里. event对象从哪里来?从事件函数中传入 obj. //e就会当前的事件对象event } 对象就有属性和方法:那么event对象也有属性和方法 event的属性和方法: { 属性: button :  当前事件的方法中判断鼠标的按键位置 有三个值: 0 (左键) 1(滚轮) 2(右键) ctrlkey:  判断是否按下了ctrl键; altkey:  判断是否按下了alt键; shiftkey:  判断是否按下

010-Scala单例对象、伴生对象实战详解

010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被其他的类或者对象访问 伴生类访问伴生对象的成员时,要通过名称.成员来访问 调用一些元素的方法初始化创建的时候,例如:Array(1,2,,34,5,6)其实调用了它的apply()方法 欢迎广大爱好者学习交流.也欢迎广大学习爱好者加入 DT大数据梦工厂交流群:462923555 DT大数据微信公众账

关于Defferred对象知识详解

关于Defferred对象知识详解 一.什么是deferred对象 Deferred是jQuery开发团队为延时操作做出的回调函数的解决方案,意思是延时到某个时间点再执行. 二.deferred的实现 1.创建三个$.Callbacks对象,分别表示成功done,失败fail,处理中process三种状态 2.对应了三种处理结果,resolve(已完成).rejiect(以失败).notify(未完成) 3.创建一个promise对象,具有state.always.then.primise方法

JavaScript对象类型详解

JavaScript对象类型详解 JavaScrtip有六种数据类型,一种复杂的数据类型(引用类型),即Object对象类型,还有五种简单的数据类型(原始类型):Number.String.Boolean.Undefined和Null.其中,最核心的类型就是对象类型了.同时要注意,简单类型都是不可变的,而对象类型是可变的. 什么是对象 一个对象是一组简单数据类型(有时是引用数据类型)的无序列表,被存储为一系列的名-值对(name-value pairs).这个列表中的每一项被称为 属性(如果是函

彻底理解浮动float CSS浮动详解 清除浮动的方法

我们把网页的常用的布局格式分为以下三种: 1.标准流. 所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流.   注意:标准流使我们网页布局中最稳定的一种结构 2. 浮动流 使我们学习的脱离标准流的第一种方式.会影响我们标准流的排列.所以,我们布局的时候,能用标准流做的,就不用浮动做. 3. 定位流 定位流也是脱离标准流的一种模式.它完全脱离标准流,不会对标准流有影响. 浮动(float) 我们要浮动的目的: 我们浮动的目的,就是可以把多个块级元素放到想要

PHP PDO函数库详解

文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/565 PDO是一个"数据库访问抽象层",作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效. 目前而言,实现"数据库抽象层"任重而道远,使用PDO这样的"数据库访问抽象层"是一个不错的选择. 目前而言,实现"数据库抽象层"

三:python 对象类型详解一:数字(上)

一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数字常量:python提供了:整数(正整数和负整数)和浮点数(带有小数部分的数字).python还允许我们使用十六进制,八进制和二进制常量来表示整数,并且允许整数具有无穷的精度. (¥)内置数学工具和扩展:python提供了一系列处理数字对象的工具: a)表达式操作符:+,-,*,/,>>(右移),

Java 对象序列化详解以及实例实现和源码下载

Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的信息 2 Java内建支持,易于实现,只需实现该接口即可,无须任何代码支持 3 性能略差 实现Externalizable接口 1 程序员决定存储哪些信息 2 仅仅提供两个空方法,实现该接口必须为两个空方法提供实现 3 性能略好 一 由于实现Externalizable接口导致了编程复杂度的增加,所以大部分时