PHP-PDO对象使用常用方法

原创 2015年11月18日 11:22:54

PDO对象的使用

根据PHP官方计划,PHP6正式到来之时,数据库链接方式统一为PDO.使用PDO链接数据库过程中,还是感觉挺好用的,给我印象最深的是可以兼容跟更多数据库、其次名称式参数、对象的映射。

连接PDO有三种方式,下面以mysql为例:

第一种:直接链接数据库,个人比较常用的选择方式
try{
    //test是我自己的数据库,host是我本机
    $dsn = "mysql:dbname=test;host=127.0.0.1";
    $user = 'root';
    $pwd = 'yangli';
    $pdo = new PDO($dsn, $user, $pwd);
}catch(PDOException $e){
    echo $e->getMessage(); // 抛出异常信息
    exit;
}

第二种: 通过url形式
// $path就是你存放uri后面需要的信息的那个文件
$path = 'D:\MyProject\myshop\PHPExcel\db.txt';
![这就是db.txt文件的内容](http://img.blog.csdn.net/20151117165336637)
$dsn = "uri:$path";
$user = 'root';
$pwd = 'yangli';
$pdo = new PDO($dsn, $user, $pwd);

第三种:通过php.ini配置文件
![把dsn信息直接写到配置文件中,需要重启apache](http://img.blog.csdn.net/20151117165529462)
$dsn = 'pdo';
$user = 'root';
$pwd = 'yangli';
$pdo = new PDO($dsn, $user, $pwd);

以上代码是PHP连接pdo的三种方法,下面总结下个人在操作PDO对象中
一些常用方法。

PDO::exec(Sql); // 执行一条sql语句,返回受影响的行数,没有则返回0,不支持select语句
PDO::query($sql); //查询语句
PDO::prepare(); //
PDO::execute(); //
PDO::getAttribute();
PDO::errorInfo();
PDO::errorCode();

以上面这些方法做了一些用例:

PDO::exec() // PDO::exec()方法不支持select语句不会从结果集中获取数据,返回受修改或删除增加 SQL 语句影响的行数。如果没有受影响的行,则 PDO::exec()  返回 0。
$sql = <<<SQL
    CREATE TABLE `user`(
    id int unsigned not null auto_increment comment '主键ID',
    `user` varchar(30) not null comment '用户名',
    `pwd` char(32) not null comment '密码',
    `email` varchar(30) not null comment '邮箱',
    primary key(`id`)
    )ENGINE=MYISAM default charset=utf8;
SQL;
    $pdo->exec($sql); // 返回0, 因为没有受影响的行数

// 插入一条语句
$sql = "INSERT INTO user (user, pwd, email) VALUES('demo1', '".md5('demo1')."','test@163.com')";
$pdo->exec($sql) // 返回1

//插入多条语句
$pwd = md5('demo1');
$sql = <<<SQL
INSERT INTO user(`user`, `pwd`, `email`)
VALUES
    ('demo2', '{$pwd}', 'test@163.com'),
    ('demo3', '{$pwd}', 'test2@163.com'),
    ('demo4', '{$pwd}', 'test3@163.com'),
    ('demo5', '{$pwd}', 'test4@163.com')

SQL;
$res = $pdo->exec($sql);
if(!$res){
    echo '错误编号: '.$pdo->errorCode();
    echo '<br />错误信息: '.print_r($pdo->errorInfo());
    exit;
}
echo '受影响的行数: '.$res.'条'; // 4

// 更新sql语句
$sql = 'UPDATE user SET email="test1@qq.com" WHERE id = 1';
$res = $pdo->exec($sql);
if(!$res){
    echo '错误的编号: '.$pdo->errorCode();
    echo '<br />错误的信息: '.var_dump($pdo->errorInfo());
    exit;
}
echo '受影响的行数'.$res.'条';

// 删除语句
$sql = "DELETE FROM user  WHERE id = 1";
$res = $pdo->exec($sql);
if(!$res){
    echo '错误的编号: '.$pdo->errorCode();
    echo '<br />错误的信息: '.var_dump($pdo->errorInfo());
    exit;
}
echo '受影响的行数'.$res.'条';

PDO::query(),PDO::prepare, PDO::execute()查询语句

PDO::query()查询
$sql = "SELECT user, email FROM user WHERE id = 2";
$stmt = $pdo->query($sql); // 返回一个statement对象
foreach($stmt as $val){
    echo 'user: '.$val['user']; // 
    echo '<br />email: '.$val['email'];
}

// 下面是查询的时候常用的方式
$sql = "SELECT id, uer, email FROM user";
$stmt = $pdo->prepare($sql); // 执行一条预处理
$sql = "SELECT * FROM user";
$stmt = $pdo->prepare($sql); //准备一条预处理sql语句),返回一个statement对象;
// 执行一条预处理语句
if(!$stmt->execute()){
    echo '错误的编号: '.$pdo->errorCode();
    echo '<br />错误的信息: '.var_dump($pdo->errorInfo());exit;
}
// PDO::fetchAll()获取多条信息
$res = $stmt->fetchAll(PDO::FETCH_ASSOC); // 第一个参数为返回数据类型, 这
里设置返回为关联数组
var_dump($res); // array()

 PDO::fetch();获取一条信息
$sql = "SELECT * FROM user WHERE id = 2";
$stmt = $pdo->prepare($sql); // 执行预处理语句,返回statement对象
if(!$stmt->execute()){
    echo '错误标号: '.$pdo->errorCode();
    echo '错误的信息: '.var_dump($pdo->errorInfo());exit;
}
$res = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($res);

设置数据库链接属性

1. PDO::ATTR_AUTOCOMMIT 
2. PDO::ATTR_CASE 
3. PDO::ATTR_CLIENT_VERSION 
4. PDO::ATTR_CONNECTION_STATUS 
5. PDO::ATTR_DRIVER_NAME 
6. PDO::ATTR_ERRMODE 
7. PDO::ATTR_ORACLE_NULLS 
8. PDO::ATTR_PERSISTENT 
9. PDO::ATTR_PREFETCH 
10. PDO::ATTR_SERVER_INFO 
11. PDO::ATTR_SERVER_VERSION 
12. PDO::ATTR_TIMEOUT 

$pdo->getAttribute(PDO::ATTR_AUTOCOMMIT); //事务是否提交,为1自动提交
$pao->setAttribute(PDO::ATTR_AUTOCOMMIT,0);// 关闭

相关文章推荐

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

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

PDO面向对象操作数据库服务器

1、PDO是PHP新版中推荐的基于面向对象操作数据库服务器的方式。 开启PDO_mysql相关扩展:在php.ini中修改extension=php_pdo_mysql.dll 重启apache ...
  • HRaymon
  • HRaymon
  • 2015年02月28日 23:41
  • 934

【PHP PDO】纯PHP(不使用框架)下 Mysql PDO 使用方法小记

1 配置信息 $config = array( 'db' => array( 'host' => '127.0.0.1', 'user' => 'root', 'pass' => ...

获取pdo对象的属性以及设置属性

//DSN (Data Source Name) 数据源名称  (主机,库, 具体的什么数据库类型) $dsn = "oci:dbname=localhost/sql";  //链接orecl 数据...

一个关于php使用pdo方式进行数据库连接和处理的类

话不多说,先贴代码
  • meeeen7
  • meeeen7
  • 2016年08月06日 15:24
  • 2361

PHP5中PDO的简单使用

作者:heiyeluren http://blog.csdn.net/heiyeshuwu> 时间:2006-10-29 关键字:PHP PHP5 PDO 数据库抽象类 PDO(PHP D...
  • leo115
  • leo115
  • 2012年05月06日 10:27
  • 60451

[实例]php中PDO方式实现数据库的增删改查

整理的比较容易理解的PDO操作实例,注意,需要开启php的pdo支持,php5.1以上版本支持实现数据库连接单例化,有三要素 静态变量、静态实例化方法、私有构造函数 DPDO.php //PDO操作...

PDO进行数据库操作的常用方法

1,先啰嗦一下PDO的定义:PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5...

PHP PDO select语句结果行数计算

PDO有一个函数PDOStatement::rowCount返回上一个SQL语句影响的行数。 rowCount函数对于DELETE, INSERT, 或者UPDATE语句的结果是正确的,但对于s...

拒绝蜘蛛协议(Robots Exclusion Protocol) .

(一)Robots Exclusion Protocol协议简介   当Robot访问一个Web站点时,比如http://www.some.com/,它先去检查文件http://www.some.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP-PDO对象使用常用方法
举报原因:
原因补充:

(最多只允许输入30个字)