PHP中使用PDO操作MySQL
PDO介绍
PHP数据对象(PDO)扩展为PHP访问数据库定义了一个轻量级的一致接口。实现PDO接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。注意利用PDO扩展自身并不能实现任何数据库功能;必须使用一个具体数据库的PDO驱动
来访问数据库服务。
PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO不提供数据库抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。
操作MySQL数据库需要PDO_MYSQL
驱动,支持MySQL 3.x/4.x/5.x。
创建PDO对象
PDO构造规则是
PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
其中对于dsn(Data Source Name),包含如下元素:
- DSN前缀,对于PDO_MYSQL,固定为
mysql:
- host,主机名
- post,主机端口
- dbname,数据库名称
- unix_socket,MySQL Unix socket(不能和host或port同时使用)
- charset,字符集
例子1
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'username';
$password = 'password';
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); $dbh = new PDO($dsn, $username, $password, $options);
?>
例子2
<?php
$dsn = 'mysql:host=localhost;port=12345;dbname=testdb;charset=utf8';
$username = 'username';
$password = 'password';$dbh = new PDO($dsn, $username, $password);
?>
查询
例子1——查询多条记录
<?php
$dsn = 'mysql:host=192.168.1.101;port=3306;dbname=zhyoulun;charset=utf8';
$username = 'zhyoulun';
$password = 'Abcd#1234';
$pdo = new PDO($dsn,$username,$password);$sql = 'select id,name from a_tag limit 0,3';
$statement = $pdo->prepare($sql);
if(!$statement->execute())
{echo "execute error";exit(1);
}
$items = $statement->fetchAll();print_r($items);
输出
Array
([0] => Array([id] => 1[0] => 1[name] => yii2[1] => yii2)[1] => Array([id] => 2[0] => 2[name] => 伪静态[1] => 伪静态)[2] => Array([id] => 3[0] => 3[name] => php[1] => php))
例子2——查询多条记录
$sql = 'select id,name from a_tag limit 0,3';
$statement = $pdo->prepare($sql);
if(!$statement->execute())
{echo "execute error";exit(1);
}
while($item = $statement->fetch())
{print_r($item);
}
结果
Array
([id] => 1[0] => 1[name] => yii2[1] => yii2
)
Array
([id] => 2[0] => 2[name] => 伪静态[1] => 伪静态
)
Array
([id] => 3[0] => 3[name] => php[1] => php
)
例子3——绑定参数
$sql = 'select id,name from a_tag where id>=:id_min and id<=:id_max';
$statement = $pdo->prepare($sql);
$statement->bindValue(':id_min', 3);
$statement->bindValue(':id_max', 4);
if(!$statement->execute())
{echo "execute error";exit(1);
}
while($item = $statement->fetch(PDO::FETCH_ASSOC))
{print_r($item);
}
结果
Array
([id] => 3[name] => php
)
Array
([id] => 4[name] => curl
)
插入
例子
$sql = "insert into a_tag(name,count) values('标签1',0);";
$affectRows = $pdo->exec($sql);
print_r($affectRows);
结果
1
更新
例子
$sql = "update a_tag set count=2 where id=1;";
$affectRows = $pdo->exec($sql);
print_r($affectRows);
结果
1
删除
例子
$sql = "delete from a_tag where id=41;";
$affectRows = $pdo->exec($sql);
print_r($affectRows);
结果
1
事务
例子
$pdo->beginTransaction();
try{for($i=1;$i<100000;$i++){$sql = "insert into a_tag(id,name,count) values({$i},'标签2',0);";$affectRows = $pdo->exec($sql);var_dump($affectRows);//触发回滚if($i==100)throw new PDOException();}$pdo->commit();
} catch (PDOException $e) {echo "rollback";$pdo->rollBack();
}
运行可以可以看到循环了100次,100次以后,触发回滚,数据库中没有新增数据。
参考
- PHP Manual
PHP中使用PDO操作MySQL相关推荐
- php使用pdo操作mysql数据库实例_php5使用pdo连接数据库实例
本文为大家介绍下php pdo的用法. 一,pdo简介 pdo(php data object) 是php 5 中加入的东西,是php 5新加入的一个重大功能,因为在php 5以前的php4/php3 ...
- php使用pdo操作mysql数据库实例_php使用PDO操作MySQL数据库实例_PHP
本文实例讲述了php使用PDO操作MySQL数据库的方法.分享给大家供大家参考.具体分析如下: PDO是mysql数据库操作的一个公用类,我们不需要进行自定类就可以直接使用pdo来操作数据库,但是在p ...
- [share]PDO操作MySql类
转载自 分享 最终编辑 liujijunbd 为了让自己的数据类能够做到最大化的重用,就写个能够重用的PDO操作MySql的类: 由于pdo可以连接现在流行的各种数据库,所以单独的写个配置类类来完成不 ...
- php pdo设置事物级别,PHP中使用PDO操作事务的一些小测试
PHP中使用PDO操作事务的一些小测试 关于事务的问题,我们就不多解释了,以后在学习 MySQL 的相关内容时再深入的了解.今天我们主要是对 PDO 中操作事务的一些小测试,或许能发现一些比较好玩的内 ...
- PDO操作MYSQL
<?php//PDO操作mysql数据库 增删改查//1.准备dsn$mysql_dsn="mysql:host=localhost;dbname=cz;charset=utf8&qu ...
- php类模块引擎PDO操作MySQL数据库简单阐述
PDO是什么呢? 通俗说就是别人写的一个"数据库操作工具类",它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去"打 ...
- Java中通过JDBC操作MySQL数据库
JDBC相关的操作 0.JDBC常用类和接口介绍 DriverManager类 DriverManager类用来管理数据库中的所有驱动程序:是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用 ...
- php pdo模仿mysql函数_GitHub - frankie-huang/PDO_MYSQL_MODEL: PHP/PDO操作MySQL行为封装(使用语法仿TP3)...
PDO_MYSQL_MODEL 文档 更新注记 2017.9.23更新 仿ThinkPHP3.2.3的模型用法进行开发,支持其大部分语法 使用prepare+execute对SQL操作进行预处理,参数 ...
- VS2010环境下用c++语言在MFC对话框程序中连接及操作Mysql 数据库
小编近来由于工作需要,需要折腾一下MySql据库, 由于以前用的数据库不是 MySql, 也不是在 VS2010 , 更不是在 MFC 中连接数据库.所以还颇费了一番周折才实现了把数据插入到数据库表格 ...
- egg.js中使用egg-mysql操作mysql数据库
1.在 egg 项目中安装 egg-mysql npm i egg-mysql --save 2.在 {app_root}/config/plugin.js 中启用 egg-mysql 插件: 'us ...
最新文章
- 程序员修神之路--设计一套RPC框架并非易事
- wuauclt.exe是什么进程?
- java 数组计算隐藏电话号码
- mediaplay抓图
- window Jconsole链接到CenOS 监控Tomcat
- WinForm编程开发实用技巧14则(转)
- springboot + mybatis-plus + quaryz 数据库持久化任务调度
- 06-Docker数据管理实践
- 眼睛却可以睁开,口干胸闷,不论自己…
- 期货反向跟单--戏剧性的事实
- 21版本FL Studio水果音乐制作软件下载
- 分布式全链路灰度发布的探索与实践
- 怎么画动漫人物的头发
- 计算机无法读取exe文件,详解EXE文件出错不能打开的修复方法
- XTransfer 1号技术员工卡乐:从普通程序猿到技术专家
- SAP发布实时数据战略 领跑数据库市场
- Linux shell 脚本编写
- Xcode framework 的编译及测试
- 找到组织了,这次世界杯锁定天天牛了
- Ubuntu系统下Clion、Visual Studio Code安装和使用教程|1-7
热门文章
- spark 两个rdd求交集,差集,并集
- IntelliJ手动安装python与scala插件
- kmeans算法详解与spark实战
- OpenCV图像处理基础操作(3)
- python ant_python3.7.1ant+TKinter在Tkin中显示来自ANT+设备的实时数据
- dram和nand哪个难生产_终于有人说清楚了什么是DRAM、什么是NAND Flash
- php list() ecah(),PHP each()与list()函数
- contenttype类型_HTTP请求中,几种常见的ContentType类型解析
- mysql 命令连接,授权用户
- 统计字符串、九宫格、编码问题