一、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. poj_3352 连通图的桥

    题目大意 给定N个点,他们之间用一些双向边连通,使得这N个点两两相互可达.但是其中某些双向边为桥,这样若断开这些桥,则整个图就无法做到点之间两两可达.现在可以添加若干条双向边,使得断开图中的任意一条边 ...

  2. 广义表操作 (ava实现)——广义表深度、广义表长度、打印广义表信息

    广义表是对线性表的扩展——线性表存储的所有的数据都是原子的(一个数或者不可分割的结构),且所有的数据类型相同.而广义表是允许线性表容纳自身结构的数据结构. 广义表定义: 广义表是由n个元素组成的序列: ...

  3. LeetCode——Best Time to Buy and Sell Stock II

    Description: Say you have an array for which the ith element is the price of a given stock on day i. ...

  4. JSP自定义标签开发入门《转》

    JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; ...

  5. js中的匿名函数和匿名自执行函数

    1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景:   <input type="button" value="点击" id ...

  6. wap启用宏

    vba for wps office是使用wps的时候开启宏需要的VBA安装包,安装好这个插件就可以开启wps的宏功能了,重新打开WPS Excel,可以看到上面的工具栏中宏选项变成可选的就成功了 1 ...

  7. 160225、解决纯js文件国际化的问题

    1.js中国际化 function test(){     alert("<s:text name='jsp.loading'/>"); }   2.最近在做strut ...

  8. ibatis 中#和 $ 符号的区别

    1.数据类型匹配 #:会进行预编译,而且进行类型匹配(自动确定数据类型): $:不进行数据类型匹配. 2.实现方式: # 用于变量替换(先生成一个占位符,然后替换) select * from use ...

  9. Oracle管理监控之使用utl_mail自动邮件报警配置

    --代发邮件存储过程源码如下: CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, -- 邮件接收人                 ...

  10. Eclipse For Android 代码自动提示功能

    Eclipse for android 实现代码自动提示智能提示功能,介绍 Eclipse for android 编辑器中实现两种主要文件 java 与 xml 代码自动提示功能,解决 eclips ...