php pdo对象使用详解: 连接数据库与exec方法
要使用pdo,首先需要开启pdo扩展,我这里已经开启了mysql的pdo扩展
ghostwu@dev:~$ php -m | grep pdo
pdo_mysql
ghostwu@dev:~$
1,连接数据库
mysql> show create database shop \G;
*************************** 1. row ***************************
Database: shop
Create Database: CREATE DATABASE `shop` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.00 sec)
mysql> show create table account \G;
*************************** 1. row ***************************
Table: account
Create Table: CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(20) CHARACTER SET latin1 NOT NULL,
`user_pwd` varchar(40) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
try{
$dsn = 'mysql:host=localhost;dbname=shop';
$username = 'root';
$pwd = 'root';
$pdo = new PDO( $dsn, $username, $pwd );
var_dump( $pdo );
}catch( PDOException $e ) {
echo $e->getMessage();
}
>上面为参数形式连接数据库
>uri形式连接数据库
dsn.txt
mysql:host=localhost;dbname=shop;
try{
$dsn = 'uri:file:///home/ghostwu/php/php2/pdo/dsn.txt';
$username = 'root';
$pwd = 'root';
$pdo = new PDO( $dsn, $username, $pwd );
var_dump( $pdo );
}catch( PDOException $e ) {
echo $e->getMessage();
}
还有一种是php.ini中写dsn连接信息,不太推荐使用
2,exec执行一条sql语句,返回值为受影响的行数,如果没有受影响的行数,返回值为0,该方法对select语句无效
try{
$dsn = 'mysql:host=localhost;dbname=shop';
$username = 'root';
$pwd = 'root';
$pdo = new PDO( $dsn, $username, $pwd );
$sql =<<< SQL
create table if not exists user(
id int unsigned not null auto_increment,
username varchar( 20 ) not null unique,
pwd char( 32 ) not null,
email varchar( 30 ) not null,
primary key( id )
)engine myisam;
SQL;
$res = $pdo->exec( $sql );
var_dump( $res );
}catch( PDOException $e ) {
echo $e->getMessage();
}
3,执行insert语句
$insertUserSql = "insert into user( username, pwd, email ) values( 'ghostwu'," . "'" . md5( 'ghostwu' ) . "'" . ",'ghostwu@test.com')";
$res = $pdo->exec( $insertUserSql );
var_dump( $res );
4,一次性执行多条sql语句
try{
$dsn = 'mysql:host=localhost;dbname=shop';
$username = 'root';
$pwd = 'root';
$pdo = new PDO( $dsn, $username, $pwd );
$bajie = md5( 'bajie' );
$wukong = md5( 'wukong' );
$tangsheng = md5( 'tangsheng' );
$insertUserSql =<<<EOF
insert into user( username, pwd, email ) values( 'wukong', '$wukong', 'wukong@huaguoshan.com' ),( 'bajie', '$bajie','bajie@tianting.com' ),( 'tangsheng', '$tangsheng','tangsheng@datang.com' );
EOF;
$res = $pdo->exec( $insertUserSql );
var_dump( $res );
}catch( PDOException $e ) {
echo $e->getMessage();
}
5,获取最后一次插入数据的自增id
try{
$dsn = 'mysql:host=localhost;dbname=shop';
$username = 'root';
$pwd = 'root';
$pdo = new PDO( $dsn, $username, $pwd );
$insertUserSql = "insert into user( username, pwd, email ) values( 'zhanzhao'," . "'" . md5('zhanzhao' ) . "','zhan@kaifeng.com')";
echo $insertUserSql . PHP_EOL;
$res = $pdo->exec( $insertUserSql );
echo $pdo->lastInsertId() . PHP_EOL;
}catch( PDOException $e ) {
echo $e->getMessage();
}
6,执行delete语句
try{
$pdo = new PDO( "mysql:host=localhost;dbname=shop", 'root', 'root' );
$sql = "delete from user where id = 1";
$res = $pdo->exec( $sql );
var_dump( $res );
}catch( PDOException $e ) {
echo $e->getMessage();
}
php pdo对象使用详解: 连接数据库与exec方法的更多相关文章
- php中的PDO函数库详解
PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...
- javascript event(事件对象)详解
javascript event(事件对象)详解 1. 事件对象 1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什 ...
- 010-Scala单例对象、伴生对象实战详解
010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...
- openerp经典收藏 对象定义详解(转载)
对象定义详解 原文地址:http://shine-it.net/index.php/topic,2159.0.htmlhttp://blog.sina.com.cn/s/blog_57ded94e01 ...
- JAVA对象头详解(含32位虚拟机与64位虚拟机)
为什么要学习Java对象头 学习Java对象头主要是为了解synchronized底层原理,synchronized锁升级过程,Java并发编程等. JAVA对象头 由于Java面向对象的思想,在JV ...
- 详解Python模块导入方法
python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...
- PHP PDO函数库详解
PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效.目前而言,实现“ ...
- 三:python 对象类型详解一:数字(上)
一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...
- CorelDRAW中如何复制对象属性详解
复制对象属性是一种比较特殊.重要的复制方法,它可以方便而快捷地将指定对象中的轮廓笔.轮廓色.填充和文本属性通过复制的方法应用到所选对象中.本教程将详解CorelDRAW中如何复制对象属性. Corel ...
随机推荐
- 获取请求地址的IP地址
public static String getIpAddr(HttpServletRequest request) throws Exception { String ip = request.ge ...
- 自用 docker-compose
version: '3.1' services: mysql: image: mysql: command: --default-authentication-plugin=mysql_native_ ...
- 分布式锁实现思路及开源项目集成到springmvc并使用
分布式锁顾名思义就是在分布式系统下的锁,而使用锁的唯一目的就是为了防止多个请求同时对某一个资源进行竞争性读写 在使用多线程时,为了让某一资源某一时刻只能有一个操作者,经常使用synchronized, ...
- day 73 初学vue (1)
前情提要: vue 框架的初学习, 主要是,指令,属性,函数,计算属性,监听属性,钩子,生命周期,过滤器,阻止事件和综合案例todo list 学习准备,感谢学习资源: vue 官网:https:// ...
- 【sping揭秘】6、IOC容器之统一资源加载策略
Spring中的resource 我们先看看类之间的关系 注意我们的application是间接继承了resourceloader的,也就是说我们的application其实就是一个resourcel ...
- SQLServer——SQLServer链接外部数据源
学习链接:https://www.cnblogs.com/licin/p/6244169.html 一.新建ODBC数据源 1.打开控制面板→管理工具→ODBC数据源→系统DSN 2.添加新系统数据源 ...
- odoo开发笔记--字段追踪,消息通知机制
odoo有着强大的消息记录.通知机制: 实际开发中,常常会有客户的需求,页面上form视图中的某些字段不允许反复修改, 假如有的用户修改了,恶意搞坏,往往容易给公司利益造成损失,或破坏,那么如何有效的 ...
- MethodImplOptions.Synchronized的一点讨论
Review代码发现有一个方法加了[MethodImpl(MethodImplOptions.Synchronized)] 属性,这个属性的目的,从名字上就可以看出,是要对所有线程进行同步执行. 对方 ...
- vue中请求本地的json数据
为什么要请求本地的数据?模拟后台的请求数据,验证页面的逻辑是否存在问题,抛开后台提前开发等. 常用的说来有:jq的方式 约等于 axios的方式,vuex状态管理的方式 个人认为最好用的就是jq的方式 ...
- 一个对眼睛很好的vim 颜色主题
地址:https://github.com/altercation/vim-colors-solarized 安装: $ cd vim-colors-solarized/colors $ mv sol ...