PHP数据库的操作(PDO)

PHP 5.1 发布时将附带一个全新的数据库连接层,即 PHP Data Objects (PDO)。虽然 PHP 一直都拥有很好的数据库连接,但 PDO 让 PHP的数据库操作 达到一个新的高度。PDO可支持基本的MySQL、Microsoft SQL Server、Oracle等数据库,并且提供了统一的操作方法,高度集成了数据库操作。PDO的使用较好的解决项目开发过程中可能存在的数据库更换问题。

PDO对数据库的操作方法如增删改查,进行了统一整合,但对原始的数据库语句存在的差异,并不能完美的解决,比如MySQL的 limit 来查询第 m 行到第 n 行的记录使用 (select * from 表名 limit m, n),而Microsoft SQL Server则需要使用top命令的组合等。

此外,使用PDO的预处理函数prepare(),能很好的解决SQL注入问题。

支持的数据库集合:

打开/连接数据库:

 1 <?php
 2 //error_reporting("E_ALL & ~ E_NOTICE");
 3     echo ‘<meta charset="utf-8">‘;//解决乱码问题
 4     $conn=false;
 5 //地址
 6     $db_server = ‘localhost‘;
 7 //端口
 8     $db_port = ‘3306‘;
 9 //数据库
10     $db_name = ‘dbdong‘;
11 //用户
12     $db_user = ‘root‘;
13 //密码
14     $db_password = ‘root‘;
15 //连接的dsn,每个数据库都存在差异
16     $dsn = "mysql:host=$db_server;port=$db_port;dbname=$db_name";
17     try {
18         //连接数据库 参数四(持久连接):array(PDO::ATTR_PERSISTENT => true)
19         $conn = new PDO($dsn, $db_user, $db_password);
20         //设置字符集
21         $conn->query("set names utf8");
22
23         echo "连接数据库成功";
24
25     } catch (PDOException $ex) {
26         exit("不能连接数据库".$ex);
27     }

补充:

1 echo $conn->getAttribute(PDO::ATTR_SERVER_VERSION);//服务器数据库版本
2 echo $conn->getAttribute(PDO::ATTR_CLIENT_VERSION);//客户端数据库版本

设置数据库操作时错误模式:

 1 /*
 2 PDO::ATTR_ERRMODE:错误报告。
 3
 4 1. PDO::ERRMODE_SILENT: 仅设置错误代码。
 5
 6 2. PDO::ERRMODE_WARNING: 引发 E_WARNING(警告) 错误
 7
 8 3. PDO::ERRMODE_EXCEPTION: 抛出 exceptions 异常。catch (PDOException $ex)捕获
 9
10 */
11 //获取到当前设置的错误模式
12 echo $conn->getAttribute(PDO::ATTR_ERRMODE);
13 //设置为警告模式,如果出现数据库操作问题,会产生警告,推荐
14 $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
15 //任意测试
16 $conn->exec("delete from xxx");

数据库操作:

1、exec(“标准sql语句“) 用来处理非结果集的

//如insert、update、delete、create,返回为影响行数

2、query(“标准sql语句“,模式取值) 可用来处理所有语句

//返回结果集(select,desc),返回空(insert、updata……)

获取结果的模式:

1 //查询并全部输出小例子
2 $xx=$conn->query("select * from c",PDO::FETCH_ASSOC);
3 //一行一行拿数据
4 while($rowx=$xx->fetch()){
5     //输出
6     print_r($rowx);
7 }

 事物处理:

开始事物->提交事物

 1 //设置错误模式为抛出异常
 2 $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 3 //开始事务
 4 $conn->beginTransaction();
 5 try{
 6     $con=$conn->exec("update c set CN=‘222222‘");
 7     $con=$conn->exec("update c sext PCNO=‘222222222222‘");
 8     if($con<=0){
 9         //抛出异常
10         throw new PDOException("哇,我自己抛出异常");
11     }
12     //提交事务
13     $conn->commit();
14
15 }catch(PDOException $ee){
16     echo "-----------------------".$ee;
17     //事务内部异常,操作全部撤销
18     $conn->rollBack();
19 }

预处理:

更新实现列子

 1 //设置错误模式为抛出异常
 2 $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 3
 4 try{
 5     //预处理SQL语句
 6     //?号占位符,必须从1下标开始
 7     //CNO=:name1 ,绑定参数时bindParam(":name1",$valuex);,名字不可相同
 8     $res=$conn->prepare("update c set CN=‘dongxiaodong1‘ where CNO=?");
 9
10     //执行第一次
11     //绑定参数1,参数是引用,所以需要是变量
12     //参数三,确定类型:PDO::PARAM_INT,PDO::PARAM_STR等
13     $valuex="C1";
14     $res->bindParam(1,$valuex);
15     //执行处理1
16     $res->execute();
17     //若两次值相同,则影响行数为0
18     echo "影响的行数:".$res->rowCount();
19
20     //执行第二次
21     $valuex="C3";
22     $res->bindParam(1,$valuex);
23     $res->execute();
24
25     //执行第三次
26     $res->execute(array("C4"));
27
28 }catch(PDOException $ee){
29     echo "!!!!!!!!".$ee;
30
31 }

查询实现列子

 1 //设置错误模式为抛出异常
 2 $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 3
 4 try{
 5
 6     //预处理SQL语句
 7     //?号占位符,必须从1下标开始
 8     //CNO=:name1 ,绑定参数时bindParam(":name1",$valuex);,名字不可相同
 9     $res=$conn->prepare("select *from c where CN=:nam");
10
11     //设置全局fetch获取数据模式,模式参考上表,范围$res以下
12     //$res->setFetchMode(PDO::FETCH_NUM);
13
14     $res->execute(array("nam"=>"dongxiaodong"));
15
16     echo "查询到的总行数为:".$res->rowCount();
17
18     //获取单行:fetch(参数1),参数1可以更改返回模式,参考上面的模式表格
19     //获取全部:fetchall(参数1)
20     print_r($res->fetchall(PDO::FETCH_NUM));
21
22 }catch(PDOException $ee){
23     echo "!!!!!!!!!".$ee;
24
25 }


PHP数据库的操作(PDO)

原文地址:https://www.cnblogs.com/dongxiaodong/p/10084400.html

时间: 12-07

PHP数据库的操作(PDO)的相关文章

MYSQL数据库的操作

Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password);   //打开一个到Mysql服务器的连接 mysql_select_db($dbname);    //选择Mysql数据库 mysql_query();   //发送一条mysql查询 mysql_fetch_assoc();  //读取返回的资源,返回一个以字符串为下标的数组 mysql_fetch_row();   //读取返回一条数据资源 mysql_affect

面向对象第七天----数据库抽象层PDO

php操作mysql方法:mysqlmysqliPDO 数据库抽象层--PDO (重点)======================================================================= 1. pdo的作用 pdo(php data object) 扩展类库,为PHP访问数据库提供了轻量级的,统一的接口.无论使用 什么数据库,都可以通过一致的函数执行查询和获取数据 优势: ① 对不同的数据库提供统一的操作方式 ② 对执行批量SQL效率高,对PHP操作S

Mysql数据库常用操作

1.备份数据库 [[email protected] ~]# mysqldump -h 192.168.0.8 -uroot  -p'123456'  user >user.sql 2.查看mysql数据库字符集设置 mysql> show variables like 'character_set_%';+--------------------------+----------------------------+| Variable_name            | Value    

使用 SQLiteOpenHelper 对数据库进行操作

SQLiteOpenHelper 是android提供的一个帮助类,这个类是抽象的,通过实现这个类,可以帮助开发者实现对SQLITE数据库的创建以及数据库版本管理,使用SQLiteOpenHelper打开数据库如果数据库存在则不创建,如果不存在则创建它(此时执行的是onCreate方法). public DatabaseHelper(Context context, String name, CursorFactory factory, int version) 第一个参数:Context类型,

Android-Sqlite数据库的操作

设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="

JDBC增删改数据库的操作

JDBC入门及简单增删改数据库的操作 一.JDBC的引入 1.JDBC的概念 JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于特定数据库管理系统.通用的sql数据库存取和操作的公共接口.它是java中专门提供的一组用于操作数据库的标准,所有的数据库生产商如果要是想为java提供支持,则必须支持此标准.既然是标准的话,所以说JDBC实际上是一套访问数据库的接口. 2.常用操作类/接口 Connection接口.Stateme

bottle框架学习(八)之Mysql数据库的操作

MySQLdb 是用于Python连接Mysql数据库的接口. 安装MySQLdb [[email protected] bottle]# yum install MySQL-python –y 如果使用编译安装请到这里下载安装包https://pypi.python.org/pypi/MySQL-python并执行以下命令 [[email protected] bottle]# gunzip  MySQL-python-1.2.3.tar.gz [[email protected] bottl

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "

(四)SQL入门 数据库的操作与事务管理

数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某个视频,里面说,当程序员很简单,就是Ctrl+C,Ctrl+V. 知道了数据库操作的三个基本操作,下面说说一个新的名词.事务. 什么是事务呢?之前我在绵阳去新的地方上班的时候,那个时候,那个时候,我还不知道什么是事务,现在上班的地方有个同事毕业半年多了,已经转正了,貌似也不知道.这个名称呢,听上去会

WinPhone开发数据库相关操作总结

1.首先来说下wp对.sqlite数据库的操作支持,从google,百度,codeplex..等等网站找寻到以下方式: (1)最古老的要数引用第三方Community.CsharpSqlite.WP.dll程序集来使用的(注意:如果你要操作现有存在的.sqlite数据库,而不是自己从头开始创建数据表,添加数据...等,那么你需要在codeplex网站上找到这个源码,进行相应的修改,这样才能够支持使用,不然会碰到很郁闷的"无法打开数据库连接.."之类的错误) (2)第二种跟第一种有所类似