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

ghostwu@dev:~$ php -m | grep pdo
pdo_mysql
ghostwu@dev:~$

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' )  . "'" . ",'ghostwu@test.com')";
$res = $pdo->exec( $insertUserSql );
var_dump( $res );

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

 try{
$dsn = 'mysql:host=localhost;dbname=shop';
$username = 'root';
$pwd = 'root';
$pdo = new PDO( $dsn, $username, $pwd );
$bajie = md5( 'bajie' );
$wukong = md5( 'wukong' );
$tangsheng = md5( 'tangsheng' );
$insertUserSql =<<<EOF
insert into user( username, pwd, email ) values( 'wukong', '$wukong', 'wukong@huaguoshan.com' ),( 'bajie', '$bajie','bajie@tianting.com' ),( 'tangsheng', '$tangsheng','tangsheng@datang.com' );
EOF;
$res = $pdo->exec( $insertUserSql );
var_dump( $res );
}catch( PDOException $e ) {
echo $e->getMessage();
}

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' ) . "','zhan@kaifeng.com')";
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();
}

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

  1. php中的PDO函数库详解

    PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...

  2. javascript event(事件对象)详解

    javascript event(事件对象)详解   1. 事件对象     1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什 ...

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

    010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...

  4. openerp经典收藏 对象定义详解(转载)

    对象定义详解 原文地址:http://shine-it.net/index.php/topic,2159.0.htmlhttp://blog.sina.com.cn/s/blog_57ded94e01 ...

  5. JAVA对象头详解(含32位虚拟机与64位虚拟机)

    为什么要学习Java对象头 学习Java对象头主要是为了解synchronized底层原理,synchronized锁升级过程,Java并发编程等. JAVA对象头 由于Java面向对象的思想,在JV ...

  6. 详解Python模块导入方法

    python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...

  7. PHP PDO函数库详解

    PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效.目前而言,实现“ ...

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

    一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...

  9. CorelDRAW中如何复制对象属性详解

    复制对象属性是一种比较特殊.重要的复制方法,它可以方便而快捷地将指定对象中的轮廓笔.轮廓色.填充和文本属性通过复制的方法应用到所选对象中.本教程将详解CorelDRAW中如何复制对象属性. Corel ...

随机推荐

  1. python中硬要写抽象类和抽象方法

    由于python没有抽象类.接口的概念,所以要实现这种功能得abc.py这个类库,具体方式如下: # coding: utf-8import abc #抽象类class StudentBase(obj ...

  2. 关于scanf、getchar、getch、getche缓冲区分析——C语言

    缓冲区 根据数据刷新的时机可以将缓冲区的类型分为:全缓冲.行缓冲.无缓冲 (注意:Windows下的输出设备没有缓冲区,意思是printf是无缓冲的,但是在Linux下printf就是行缓冲的,至于为 ...

  3. MySQL 并行复制(MTS) 从库更新的记录不存在实际却存在

    目录 背景 版本 分析 测试 背景 开了并行复制的半同步从库SQL 线程报1032错误,异步复制从库没有报错,偶尔会出现这种 版本 mysql 5.7.16 redhat 6.8 mysql> ...

  4. 关于UUID

    UUID是通用唯一识别码的缩写,其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息. UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的. 在做后台管理的时候,经常会碰 ...

  5. springbootf访问静态文件资源

    springboot目录结构: 网友说在springboot的配置文件中加 现在访问static目录下的jquery文件 用jquery在页面做一个弹窗 启动服务看页面效果 页面没有出现弹窗 ,连jq ...

  6. 《Python编程从入门到实践》--- 学习过程笔记(3)列表

    一.用[](方括号)表示列表,用,(逗号)分隔其中的元素. >>> name=['limei', 'hanmeimei', 'xiaoming'] >>> prin ...

  7. 【sping揭秘】5、IOC容器(一)

    OC容器实现过程 1. 容器启动阶段,读取配置文件,解析文件BeanDefinitionReader 2. Bean 实例化阶段 关于BeanFactoryPostProcessor 插手spring ...

  8. web工程迁移---在一个jboss5或jboss6中运行多个实例

    在工作中遇到的,如何在一个jboss中运行多个节点(segment). 我使用的环境是win7.jboss5.jboss6.JDK6 1.jboss5下运行多个实例 第一步不用说,首先要在环境变量中设 ...

  9. 2014.10.5 再次学习LINUX

    mesg 发送信息给root y n write/talk 写消息给 wall 给所有用户发送消息 ps -aux ps -elF pstree 命令行跳转:CTRL+a行首 CTRL+e行尾 CTR ...

  10. Vue源码翻译之组件初始化。

    废话不多说. 我们先来看看Vue的入口文件. import { initMixin } from './init' import { stateMixin } from './state' impor ...