文档章节

PHP PDO对mysql的常规操作

jichun
 jichun
发布于 2017/09/09 16:27
字数 523
阅读 7
收藏 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
0
linux(centos)下安装PHP的PDO扩展

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

it1000001001
2017/07/31
99
0
PHP PDOStatement对象bindpram()、bindvalue()和bindcolum

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

开元中国2015
2015/07/31
233
0
centos中添加php扩展pdo_mysql步骤

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

mac_zhao
2015/01/20
0
0
安装PDO_MYSQL遇到的问题:error: Cannot find MySQL header files under

首先到php的源码包下找到pdomysql的源码,或者重新下载pdomysql源码 如果是php源码则路径为: /home/corey/Downloads/php-5.3.1/ext/pdomysql ,/home/corey/Downloads/php-5.3.1为你源码所在...

wensongyu
2013/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
15分钟前
0
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
49分钟前
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
0
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
2
0
设计模式之五 责任链模式(Chain of Responsibility)

一. 场景 相信我们都有过这样的经历; 我们去职能部门办理一个事情,先去了A部门,到了地方被告知这件事情由B部门处理; 当我们到了B部门的时候,又被告知这件事情已经移交给了C部门处理; ...

JackieRiver
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部