一、PDO的概念

  PDO其实就是一个数据库的抽象层,使用PDO编程可以方便的在之后的实际运营中随时更改数据库而不用变更源代码。PDO的位置如下图所示:

二、PDO的开启

  PDO需要使用php 5.1 之后的版本。

  查看是否开启pdo功能需要新建一个php文件,使用phpinfo函数查询

  

  如图,PDO驱动和pdo_mysql扩展均开启(enabled)

  linux:

  我的系统是ubuntu14.04.3,php版本是PHP 5.5.9-1ubuntu4.14 ,在我这里pdo扩展默认是开着的(在后期的php版本中pdo已经是核心功能,不需要再自行安装了,网上的教程都是针对之前的php版本的),而且php的mysql扩展也是默认开着的,不知道这是不是因为我用的是ubuntu版的php。如果mysql扩展没开的话也只需执行sudo apt-get install php5-mysql 安装驱动即可,别的数据库也是这样操作。

  win:在php.ini文件中,把以下两行注释去掉

  extension=php_pdo.dll     //PDO驱动程序共享扩展必须有 (windows)

  extension=php_pdo_mysql.dll   //MySQL扩展

  如果要开启别的数据库扩展去掉相应的注释即可

三、PDO的使用

  3.1 PDO对象初始化

  PDO的构造函数如下:

    PDO __construct( string dsn

      [, string username   

      [, string password

      [, array driver_options]]] );

   dsn数据库连接信息如“mysql:host=localhost;dbname=库名”

  下面举个栗子:

  $pdo = new PDO("mysql:host=localhost;dbname=phptest","root","123");

  这就完成了PDO对象的初始化,所连接的数据库是mysql数据库的phptest这个数据库,使用的用户名和密码分别是root和123

  如果把dsn信息写到配置文件中,则使用如下方式:

  $pdo = new PDO("uri:MysqlDbo.ini","root","123");  \\dsn数据写在MysqlDbo.ini文件中

  

  3.2 PDO对象的使用

  PDO的成员方法如下:

  1 ) query($sql);      //用于执行查询SQL语句。返回PDOStatement对象

  2 ) exec($sql);          //用于执行增、删、改操作,返回影响行数;

  3 ) setAttribute();     //设置一个"数据库连接对象"属性。

  4 ) fetchAll();        //解析数据

  下面举例:  

  数据库原始数据如下:

  

查询数据:

 <?php
//连接数据库
try {
$pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "20125202");
}
catch (PDOException $e){
die("数据库连接失败".$e->getMessage());
}
//查询语句
$sql = 'select * from students';
//执行语句、解析数据
echo '  id  '.'____________'.'name'.'____________'.'sex'."<br>";
foreach ($pdo->query($sql) as $val){
echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>";
}
?>

效果如图:

插入数据:

 <?php
//连接数据库
try {
$pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "123");
}
catch (PDOException $e){
die("数据库连接失败".$e->getMessage());
}
//插入语句
$sql = "insert into students values('20125203','tony','female')";
//执行语句、解析数据
$res = $pdo->exec($sql);
if ($res){
echo "插入成功!</br>";
}
//查询结果
$sql = 'select * from students';
echo '  id  '.'____________'.'name'.'____________'.'sex'."<br>";
foreach ($pdo->query($sql) as $val){
echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>";
}
?>

效果如图:

修改于删除数据操作类似

修改数据:

 <?php
//连接数据库
try {
$pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "123");
}
catch (PDOException $e){
die("数据库连接失败".$e->getMessage());
}
//插入语句
//$sql = "insert into students values('20125203','tony','female')";
//修改语句
$sql = "update students set sex='male' where id='20125203'";
//执行语句、解析数据
$res = $pdo->exec($sql);
if ($res){
echo "修改成功!</br>";
}
//查询结果
$sql = 'select * from students';
echo '  id  '.'____________'.'name'.'____________'.'sex'."<br>";
foreach ($pdo->query($sql) as $val){
echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>";
}
?>

修改数据

效果如图:

删除数据:

 <?php
//连接数据库
try {
$pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "20125202");
}
catch (PDOException $e){
die("数据库连接失败".$e->getMessage());
}
//插入语句
//$sql = "insert into students values('20125203','tony','female')";
//修改语句
//$sql = "update students set sex='male' where id='20125203'";
//删除语句
$sql = "delete from students where id='20125203'";
//执行语句、解析数据
$res = $pdo->exec($sql);
if ($res){
echo "删除成功!</br>";
}
//查询结果
$sql = 'select * from students';
echo '  id  '.'____________'.'name'.'____________'.'sex'."<br>";
foreach ($pdo->query($sql) as $val){
echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>";
}
?>

删除数据

效果如图:

以上就是PDO的基本使用方法与增删查改等操作。

初识PHP(四)PDO对象配置于使用的更多相关文章

  1. PHP中PDO的配置与说明

    住[PDO是啥] PDO是PHP5新加入的一个重大功能,因为在PHP5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么php_mysql.dll.php_pgsql.dll ...

  2. flask session,蓝图,装饰器,路由和对象配置

    1.Flask 中的路由   *endpoint - url_for 反向地址  *endpoint 默认是视图函数名  *methods 指定视图函数的请求方式,默认GET  defaults={& ...

  3. Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)

    一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...

  4. PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入

    1.安装 PDO 数据库抽象层 PDO - PHP Data Object 扩展类库为 PHP 访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,针对不同的数据库服务器使用特定的 ...

  5. CentOS 7 学习(四)Git配置(一)

    CentOS 7 学习(四)Git配置(一) 1.对于版本管理系统,目前常用的是Subverion和Git,Subversion是集中式版本管理系统中最好的,所有人的代码都要提交到服务器上,如果要知道 ...

  6. 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入

    使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...

  7. 第四章 INI配置——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2020820 第四章 INI配置——<跟我学Shiro> 博客分类: 跟我学Shir ...

  8. js上 十四、对象

    十四.对象 #1.初识对象 什么是对象? 在js中,一切皆是对象. 对象,生活中可见和不可见的东西,在世界中,客观存在的都是一个对象. 桌子,笔记本,手机,人. 在日常生活中,我们是如何来描述这个对象 ...

  9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

随机推荐

  1. CSS3 属性组参考资料

    CSS 属性组: 动画 背景 边框和轮廓 盒(框) 颜色 内容分页媒体 定位 可伸缩框 字体 生成内容 网格 超链接 行框 列表 外边距 Marquee 多列 内边距 分页媒体 定位 打印 Ruby ...

  2. poj_2195 最小费用最大流

    题目大意 一个nxm的地图,地图上的横纵交错成nxm个交叉点,其中有k个交叉点为房间,k个交叉点为k个小人的初始位置.小人可以在地图上沿着水平或垂直方向行走,每走一步的代价为1.求这k个小人分别到达k ...

  3. RDO部署多节点OpenStack Havana(OVS+GRE)

    RDO是由红帽RedHat公司推出的部署OpenStack集群的一个基于Puppet的部署工具,可以很快地通过RDO部署一套复杂的OpenStack环境,当前的RDO默认情况下,使用Neutron进行 ...

  4. 【jQuery系列之插件】jquery插件之jquery-validation

    equalTo方法: equalTo: function( value, element, param ) { // Bind to the blur event of the target in o ...

  5. jQuery中的ajax用法案例

    什么是 AJAX? AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML). 简短地说,在不重载整个网页的情况下,AJAX 通过后台加载 ...

  6. 使用log4net记录日志到数据库(含有自定义属性)

    记录日志是管理系统中对用户行为的一种监控与审核,asp.net中记录日志的方式有很多种,这里我只介绍一下最近用到的log4net,关于他的具体介绍网上有很多,我讲一下他的用法. 第一步:在配置文件中的 ...

  7. {Azure} 常用链接

    https://azure.microsoft.com/zh-cn/documentation/scenarios/web-app/

  8. 如何设置Eclipse工作区默认编辑宽度

    1)打开Window  => Preferences窗口 2)打开Formatter属性页从Java => CodeStyle => Formatter 3) 单击New创建一个自己 ...

  9. 170720、springboot编程之properties文件讲解

    但是在实际开发过程中有更复杂的需求,我们在对properties进一步的升华.在本篇博客中您将会学到如下知识(这节中有对之前的知识的温故,对之前的升华): (1) 在application.prope ...

  10. lampp and testrail

    https://wyzx.testrail.net szllq2000 http://129.0.1.228/testrail/ http://docs.gurock.com/testrail-adm ...