初识PHP(四)PDO对象配置于使用
一、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对象配置于使用的更多相关文章
- PHP中PDO的配置与说明
住[PDO是啥] PDO是PHP5新加入的一个重大功能,因为在PHP5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么php_mysql.dll.php_pgsql.dll ...
- flask session,蓝图,装饰器,路由和对象配置
1.Flask 中的路由 *endpoint - url_for 反向地址 *endpoint 默认是视图函数名 *methods 指定视图函数的请求方式,默认GET defaults={& ...
- Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)
一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...
- PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
1.安装 PDO 数据库抽象层 PDO - PHP Data Object 扩展类库为 PHP 访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,针对不同的数据库服务器使用特定的 ...
- CentOS 7 学习(四)Git配置(一)
CentOS 7 学习(四)Git配置(一) 1.对于版本管理系统,目前常用的是Subverion和Git,Subversion是集中式版本管理系统中最好的,所有人的代码都要提交到服务器上,如果要知道 ...
- 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入
使用react全家桶制作博客后台管理系统 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...
- 第四章 INI配置——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2020820 第四章 INI配置——<跟我学Shiro> 博客分类: 跟我学Shir ...
- js上 十四、对象
十四.对象 #1.初识对象 什么是对象? 在js中,一切皆是对象. 对象,生活中可见和不可见的东西,在世界中,客观存在的都是一个对象. 桌子,笔记本,手机,人. 在日常生活中,我们是如何来描述这个对象 ...
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
随机推荐
- JS常用函数与方法
//当页面关闭时触发 window.onbeforeunload = function() { alert('关闭了吧'); } //关闭窗口(弹出式窗口) parent.window.close() ...
- web基础----->readonly与disabled的区别
readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,今天我们通过案例来学习一下. readonly和Disabled的区 ...
- JS-键盘事件之方向键移动元素
注意三点: 1:事件名称onkeydown. 2:事件加给document,而非window. 3: 把元素的top,left值分别用offsetTop,offsetLeft来设定. <!DOC ...
- html to pdf小工具,支持evernote导出的html和firefox插件scrapbook
周末花了一天时间用wpf写了一个html转换为pdf的小工具. 已经在win7 32位 和win8 64两台机器上测试,目前基本可用,特拿来分享. 程序下载地址:http://pan.baidu.co ...
- 安装 sql server 2008出现重启电脑,另在server 2012 r2安装sql server 2008 安装不上
时即使是进行电脑重启,也会报这个错误,那么就不是电脑的问题了,其实是系统注册表在作怪,解决方法如下: 1.开始-->运行,输入regedit,打开注册表管理器: 2. 找到 HKEY_LOCAL ...
- zabbix 部署 jmx 监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...
- sql 中如何将返回的记录某一条置顶
将table1中id 为2的记录置顶select * from table1order by case when id='2' then 0 else 1 end 例子:将已发布的置顶,status ...
- python linux 自动补全 tab.py
#!/usr/bin/env python # python startup file import sys import readline import rlcompleter import ate ...
- SLF4J其实只是一个门面服务而已,他并不是真正的日志框架,真正的日志的输出相关的实现还是要依赖Log4j、logback等日志框架的。
小结: 1.加层: 每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性. 为了解决这个问题,就是在日志框架和应用程序之间架设一个 ...
- Mac OS X 在 Finder 里快速创建文本文件
Automator 新建一个 Application 选取:应用程序 实用工具→运行AppleScript 添加一个动作 "Run AppleScript"代码如下: on r ...