文档章节

PDO 完全使用教程

myzyq
 myzyq
发布于 2016/03/14 17:21
字数 564
阅读 47
收藏 0

一.PDO异常处理

PDO::ATTR_ERRMODE

    1. PDO::ATTR_ERRMODE//不报错误(忽略)(0)
    1. PDO::ERRMODE_WARNING //以警告的方式报错(1)
    1. PDO::ERRMODE_EXCEPTION //以异常的方式报错(2)
<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
    // 设置以异常的方式返回错误
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die('数据库连接失败' . $e->getMessage());
}

二.PDO预处理方法

    1. prepare() //用于执行查询SQL语句,返回PDOStatement对象
    1. bindValue() //将值绑定到对应的一个参数,返回布尔值
    1. bindParam() //将参数绑定到相应的查询占位符上,返回布尔值
    1. bindColumn() //用来匹配列名和一个指定的变量名
    1. execute() // 执行一个准备好了的预处理语句,返回布尔值
    1. rowCount() // 回使用增、删、改、查操作语句后受影响的行总数
$sql="INSERT INTO users(id,name,age) VALUES(?,?,?)";  
$stmt=$pdo->prepare($sql);  
  
//3.对?号的参数进行绑定  
$id=null;  
$name="test103";  
$age=103;  
  
//第一种绑定方式  
//$stmt->bindValue(1,$id);  
//$stmt->bindValue(2,$name);  
//$stmt->bindValue(3,$age);  
  
//第二种绑定方式  
//$stmt->bindParam(1,$id);  
//$stmt->bindParam(2,$name);  
//$stmt->bindParam(3,$age);  
  
//4.执行  
//$stmt->execute();  
//第三种绑定方式:直接执行数组  
$stmt->execute(array($id,$name,$age));  
echo $stmt->rowCount();  

//2.预处理的SQL语句  
$sql="INSERT INTO users(id,name,age) VALUES(:id,:name,:age)";  
$stmt=$pdo->prepare($sql);  
  
//3.参数进行绑定  
$id=null;  
$name="test203";  
$age=23;  
  
//第一种绑定方式  
//$stmt->bindValue("id",$id);  
//$stmt->bindValue("name",$name);  
//$stmt->bindValue("age",$age);  
  
//第二种绑定方式  
//$stmt->bindParam("id",$id);  
//$stmt->bindParam("name",$name);  
//$stmt->bindParam("age",$age);  
  
//4.执行  
//$stmt->execute();  
//第三种绑定方式:直接执行数组  
$stmt->execute(array("id"=>$id,"name"=>$name,"age"=>$age));  
echo $stmt->rowCount();  


//2.预处理查询  
$sql="SELECT id,name,age FROM users";  
$stmt=$pdo->prepare($sql);  
//3.执行  
$stmt->execute();  
foreach($stmt as $val){  
    echo $val['id']."------".$val['name']."------".$val['age']."<br/>";  
}

三.事务处理操作方法介绍

    1. beginTransaction() //开启一个事物(做一个回滚点)
    1. commit() //提交事务
    1. rollBack() //事务回滚操作
//2.执行数据操作  
try{  
    //开启事物  
    $pdo->beginTransaction();  
    $sql="insert into users(id,name,age) VALUES(?,?,?)";  
    $stmt=$pdo->prepare($sql);  
    //传入参数  
    $stmt->execute(array(null,"test1","21"));  
    $stmt->execute(array(null,"test2","22"));  
    $stmt->execute(array(null,"test3","23"));  
    //提交事物  
    $pdo->commit();  
}catch (PDOException $e){  
    die("fail to execute".$e->getMessage());  
    //事物回滚  
    $pdo->roolback();  
}  

本文转载自:http://blog.csdn.net/bboyjoe/article/details/49003791

共有 人打赏支持
myzyq
粉丝 2
博文 39
码字总数 4196
作品 0
昌平
程序员
私信 提问
MySQL数据库PDO教程

翻译烂到家了,看不顺眼轻喷。。。 1.为什么要使用PDO?         mysql*函数已经过时,相当一段时间以来,mysql函数在其他SQL数据库编程接口方面已经有所差别;它不支持预处理,存储...

旺仔的小馒头
2016/07/01
27
0
PHP学习路线图 最全PHP自学指南

对于广大零基础的PHP自学者,往往不知道如何系统的学习PHP,导致平白浪费了很多时间。本文将为大家带来最详细的php学习路线图,同时还会附上相应的权威教程,让广大PHP自学者少走许多弯路。 ...

W3Cschool小编
2018/04/24
0
0
为什么 PHP 应该使用 PDO 方式访问数据库

很多程序员都学习过如何使用 MySQL 或 MySQLi 扩展访问数据库。在 PHP 5.1 中,有一个更好的方法。 PHP Data Objects (PDO) 提供了很多预处理语句的方法,且使用对象将使你的工作更有成效! ...

冻鱼
2013/06/16
11K
38
Centos中安装PHP的PDO MySQL扩展的教程

PHP Data Objects(PDO)扩展为 PHP 访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。注意利用 PDO 扩展自身并不能实现任何数...

drewin
2014/03/30
0
0
php连接mysql数据库的几种方式(mysql、mysqli、pdo)

php连接mysql数据库的几种方式(mysql、mysqli、pdo) www.111cn.net 编辑:flyfox 来源:转载 php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,...

DanEcho
2016/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

想问一下C++里queue要怎么遍历

如题,想知道怎么遍历<queue>对象的元素? 貌似不能遍历。要么全部pop push一遍,要么换个容器呗。 queue是先进后出的数据类型,只能不断读top()然后再pop()掉。故意把遍历操作隐藏掉了,...

shzwork
昨天
2
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
2
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
3
0
【转】go get命令使用socket代理

由于某些不可描述的原因,国内使用go get命令安装某些包的时候会超时导致失败,比如net包、sys包、tools包等。第一种解决办法就是自己从git上下载后添加链接到GOPATH中,比如: 1234...

yiduwangkai
昨天
6
0
从上往下打印出二叉树的每个节点,同层节点从左至右打印。

//第一种做法 public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList <Integer> li=new ArrayList<Integer>(); ArrayList <TreeN......

南桥北木
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部