文档章节

PHP PDO对mysql的常规操作

jichun
 jichun
发布于 2017/09/09 16:27
字数 523
阅读 7
收藏 0
点赞 0
评论 0

平时常用框架自带的类来操作数据库,今天重温php的pdo的相关知识,记录如下。

PHP PDO链接MySql数据库

$db = new PDO('mysql:host=localhost;dbname=test','root','123456');
$db->exec('set names utf-8');

其中,localhost可以改写为ip地址。若为正式环境,建议写线上服务器的内网地址;root为数据库用户名,123456为密码。

假若建表如下

CREATE TABLE `news` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `ctime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

查询

简单查询

$sql = "select * from news order by id desc";
$db->query($sql)->fetchAll(PDO::FETCH_ASSOC);

或用占位符

$sql = "select * from news where id >= ? order by id desc";
$sth = $db->prepare($sql);
$sth->execute([1]);
print_r($sth->fetchAll(PDO::FETCH_ASSOC));

若数据量大,为减轻数据库压力,可以用fetch更换fetchAll。再遍历结果集获取查询后的关联数组。

$sql = "select * from news where id >= ? order by id desc";
$sth = $db->prepare($sql);
$result = [];
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
    $result[] = $row;
}

 

添加

$sql = "insert into news (title,ctime) values ('title1','2017-09-09 10:01:00')";
$sth = $db->prepare($sql);
$sth->execute();

或用占位符

$sql = "insert into news (title, ctime) values (?,?)";
$sth = $db->prepare($sql);
$sth->execute(['title1','2017-09-09 10:01:00']);

添加多条数据

如果想插入多条数据,不想写很多的? ,同时execute又不支持通过二维数组传参 [ ['title1','2017-09-09 10:01:00'], ['title2','2017-09-09 10:02:00'] ].我们可以采用参数绑定的方法(当然也可以拼接sql等),来添加多条数据。

$sql = 'insert into news (title,ctime) values (:title, :ctime)';
$sth = $db->prepare($sql);
$data = [ 
            ['title'=>'title1', 'ctime'=>'2017-09-09 10:01:00'],
            ['title' => 'title2', 'ctime' =>'2017-09-09 10:02:00']
        ];
try {
     $db->beginTransaction();
     foreach ($data as $item) {
         $sth->bindValue(':title', $item['title']);
         $sth->bindValue(':ctime', $item['ctime']);
         $sth->execute();
     }
    $db->commit();
} catch (PDOException $e) {
    $db->rollBack();
}

 

修改

$sql = "update news set title = 'news01' where id = 1";
$sth = $db->prepare($sql);
$sth->execute();

$sql = "update news set title = 'news01' where id = ?";
$sth = $db->prepare($sql);
$sth->execute([1]);

 

删除

$sql = "delete from news where id = 2";
$sth = $db->prepare($sql);
$sth->execute();

$sql = "delete from news where id = ?";
$sth = $db->prepare($sql);
$sth->execute([1]);

 

© 著作权归作者所有

共有 人打赏支持
jichun
粉丝 0
博文 21
码字总数 8474
作品 0
深圳
php pdo学习笔记

dsn:也称为数据源,通常一个dsn是由一个PDO驱动名加冒号,以及具体PDO驱动的连接语法组成。 常规写法: $dsn="mysql:dbname=test;host=127.0.0.1"; 也可以从文件中读取、 $dsn = "uri:file...

wly1992 ⋅ 2017/05/03 ⋅ 0

linux(centos)下安装PHP的PDO扩展

PHP 数据对象PDO扩展为PHP访问数据库定义了一个轻量级的一致接口。PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。最近在我们的...

it1000001001 ⋅ 2017/07/31 ⋅ 0

PHP5中PDO的简单使用

PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_mysql.dll之类的了...

Junn ⋅ 2012/09/26 ⋅ 0

PHP PDOStatement对象bindpram()、bindvalue()和bindcolum

PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别 PDOStatement::bindParam ― 绑定一个参数到指定的变量名。 绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或...

开元中国2015 ⋅ 2015/07/31 ⋅ 0

centos中添加php扩展pdo_mysql步骤

pdomysql是php中一个mysql连接类了,我们可以直接使用pdomysql来操作数据库这样自己可以不需要写数据库操作类了,下面来介绍在centos中安装pdo_mysql扩展的步骤。 本文内容是以 CentOS 为例,...

mac_zhao ⋅ 2015/01/20 ⋅ 0

PHP沉思录-第一篇-工作模型与数据库访问接口-左轻侯-《程序员》2007年5月号

PHP沉思录 作者:左轻侯 创建时间:2007-05-10 09:47:29 最后修改时间:2010-12-31 23:19:57 本文发表于《程序员》5月号   是一个系列的第一篇,目前想到的其他一些主题是:      SQL...

一配 ⋅ 2015/10/16 ⋅ 0

MySQL数据库PDO教程

翻译烂到家了,看不顺眼轻喷。。。 1.为什么要使用PDO?         mysql*函数已经过时,相当一段时间以来,mysql函数在其他SQL数据库编程接口方面已经有所差别;它不支持预处理,存储...

旺仔的小馒头 ⋅ 2016/07/01 ⋅ 0

php连接mysql数据库的几种方式(mysql、mysqli、pdo)

php连接mysql数据库的几种方式(mysql、mysqli、pdo) www.111cn.net 编辑:flyfox 来源:转载 php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,...

DanEcho ⋅ 2016/11/10 ⋅ 0

pdo常用的sql写法

 mysql*函数已经过时,相当一段时间以来,mysql函数在其他SQL数据库编程接口方面已经有所差别;它不支持预处理,存储过程,事务等一些现代数据库设计思想,SQL语句字符串转义函数 和 拼接S...

chenhongjiang ⋅ 2016/05/06 ⋅ 0

PDO

PDO 一、什么是PDO PDO是PHP数据对象(PHP Data Object)的缩写 二、怎么查看php是否支持PDO 1. 使用phpinfo() 函数查看PDO是否支持 2. 如果没有开启PDO 请查看 wamp目录:(C:wampbinphpphp7.0....

方花 ⋅ 2017/11/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 16分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 20分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 26分钟前 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 26分钟前 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 27分钟前 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 53分钟前 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

Java序列化和反序列化

1、什么是序列化和反序列化 序列化:把对象转换为字节序列的过程。 反序列化:把字节序列恢复成对象的过程。 2、被序列化的类需要实现serializable接口,只是为了标注该对象是可以被序列化的...

IT-Mamba ⋅ 今天 ⋅ 0

流式构建原理

流式构建需要达到分钟级的数据更新频率,Kylin采用类似于Spark Streaming的做法,每隔数分钟进行一次微构建。这边的构建需要考虑到一个延迟因素,分布式网络存在延迟等因素,该时间段的数据有...

无精疯 ⋅ 今天 ⋅ 0

在maven项目工程编写solr代码,需要的依赖

solrJ <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>6.6.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents<......

爱运动的小乌龟 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部