我懒蛋又回来了!-PDO
hi
好几天了吧,脚伤都有一周了的。玩乐的这么久才发觉,对于年轻人,或者更具体的,对我而言,受伤最难受的不是受伤瞬间的身痛,不是随之而来的心理负担,不是独自一人远在他乡的孤独无助之感;最伤的是斗志,是受伤后提不起来的消沉意志,是破罐子破摔的糜烂心气,或者,是问题本质的内心莫名的恐惧。
还好,虽然这么多天没动,恐惧的双刃剑还是刺痛尚存的责任心、内疚感,我还能继续写博客,活活活活~~
争取一天一门课,回家之前能有所成,一起加油!
新人新气象新课程~
1、PDO
一、PDO简介
1.1 PDO
PHP Data Object,数据库访问抽象层,统一各种数据库的访问接口。
提高数据库之间的移植性以及可维护性——手段是抽象度的提高,访问接口的统一。
不管用什么数据库,可以用同一个API进行编写。
--特性
编码一致性;
灵活性;
高性能;(c语言编写的,编译为PHP)
OOP。
--支持的库
PDO只是一个抽象的接口,对该接口的操作还需要支持各种库。
这里我们用的是PHP语言,所以用PDO MySQL。
1.2 配置与启用
在PHP的配置文件进行配置:
开启php_pdo.dll拓展-》开启相对应的数据库的拓展php_pdo_mysql.dll-》phpinfo看一下。
当然不同的环境(集成)是不一样的,自行百度吧。
1.3 连接数据库
--方式
参数形式;
URI形式;
配置文件形式。php.ini
--栗子
<?php
/*
* PDO实现连接数据库
*/
//参数形式
try {
$dsn='mysql:localhost;dbname=imooc_pdo';//数据源
$username='root';
$passwd='';
$pdo=new PDO($dsn, $username, $passwd); //pdo对象
var_dump($pdo);
}catch (PDOException $e){ //得到错误信息
echo $e->getMessage();
}
//URI形式
try {
$dsn='uri:C:\wamp\www\PDO_learning\dsn.txt';//区别就在于数据源获取
$username='root';
$passwd='';
$pdo=new PDO($dsn, $username, $passwd);
var_dump($pdo);
}catch (PDOException $e){ //得到错误信息
echo $e->getMessage();
}
//配置文件形式,首先要在php.ini中写pdo.dsn.imooc="mysql:host=localhost;dbname=imooc_pdo"
try {
$dsn='imooc';//区别就在于数据源获取
$username='root';
$passwd='';
$pdo=new PDO($dsn, $username, $passwd);
var_dump($pdo);
}catch (PDOException $e){ //得到错误信息
echo $e->getMessage();
}
基本流程就是写好参数,然后new一个PDO对象即可。参数有数据源信息,用户名,密码三个。
数据源:data source name:驱动器名称:主机;数据库;(各种数据库这里的语法是不同的,自查)。
可以看到,三种形式的区别就在于取数据源的方式不同。
建议通过参数形式连接,当然,随你。
二、PDO对象的使用(增删改查)
2.1 exec()
执行一条SQL语句,并返回其受影响的行数,如果没有受影响的记录返回为0。
注意,exec对select没有用。
--栗子:建表&增
<?php
/*
* exec()的使用案例
*/
$pdo=new PDO('mysql:host=localhost;dbname=imooc','root','');
$sql=<<<EOF
CREATE TABLE IF NOT EXISTS user(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL UNIQUE,
password CHAR(32) NOT NULL,
email VARCHAR(30) NOT NULL
);
EOF;
$pdo->exec('use imooc_pdo');
$result0=$pdo->exec($sql);
var_dump($result0);
$insert='insert user(username,password,email) values("Kinga","'.md5('king').'","shit@shit.com")';
$result1=$pdo->exec($insert);
var_dump($result1);
但是,如果重复执行的话,会返回false。(?我也不知道为什么,谁能告诉我)
同样的删除也是可以的,但是注意查select是不能用exec执行的。
每次从exec的返回结果进行结果的判定就行。
---------------------------------------------------------------------
哎呀,我真欠打,看了两集朝廷的综艺节目,时间哗哗的。。明天加油吧。
我懒蛋又回来了!-PDO的更多相关文章
- Oracle-1 - :超级适合初学者的入门级笔记,CRUD,事务,约束 ......
Oracle 更改时间: 2017-10-25 - 21:33:49 2017-10-26 - 11:43:19 2017-10-27 - 19:06:57 2017-10-28 - ...
- 常见linux命令释义(第四天)——bash部分
学linux的时候,我跳过了一些很重要的东西.比如分区.还有vim的深入学习.分区没有学习是因为我装的是虚拟机,不知道是什么原因,格式化分区不能正常显示.至于vim,简单的增删改查我已经了解了.能够顺 ...
- linux下git的简单运用
linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...
- hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点
周一要了个任务,做评价完成,分享完成的页面,做到周四发现可能做不出来,找dzy,逻辑比较混乱,想要放弃了,感觉自己非常没用.昨天跟豆聊了一下,否定自己是一点意义也没有的,觉得自己很差劲,无助的感觉跟初 ...
- Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器
初学者可以从查询到现在的pl/sql的内容都可以在我这里的笔记中找到,希望能帮到大家,视频资源在 资源, 我自己的全套笔记在 笔记 在pl/sql中可以继续使用的sql关键字有:update del ...
- PR视频剪辑
PR视频剪辑 新手问题1: 将素材导入到Adobe Premiere Pro CC后为什么无法拖入到时间轴上 解决办法:没有建立有序列所致,CC不会一开始就让你新建序列,图中间处写的好清楚“无序列”. ...
- sqlalchemy tree 树形分类 无限极分类的管理。预排序树,左右值树。sqlalchemy-mptt
简介: 无限极分类是一种比较常见的数据格式,生成组织结构,生成商品分类信息,权限管理当中的细节权限设置,都离不开无限极分类的管理. 常见的有链表式,即有一个Pid指向上级的ID,以此来设置结构.写的时 ...
- 深入研究sqlalchemy连接池
简介: 相对于最新的MySQL5.6,MariaDB在性能.功能.管理.NoSQL扩展方面包含了更丰富的特性.比如微秒的支持.线程池.子查询优化.组提交.进度报告等. 本文就主要探索MariaDB当中 ...
- Cordova - Windows版本图形界面管理工具,告别命令行输入方式!
Cordova本身提供的是命令行管理工具,并没有提供图形界面管理工具,虽然命令行管理工具可以完成所有Cordova管理,但是对于我这种懒蛋,可真不希望每次都输入命令,而且我更担心一旦输错一个字符,命令 ...
随机推荐
- Restive.js – 轻松让网站变成响应式和自适应
Restive.js 是一个 jQuery 插件,可以帮助您轻松快捷地添加响应式功能到你网站,适应几乎所有拥有 Web 功能的设备.使用设备检测,高级管理断点,以及方向管理的组合,Restive.js ...
- 2015年最佳的15个 Node.js 开发工具
Node.js 越来月流行,这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...
- go语言 新手学习笔记 go基础教程
目前这方面的资料相对较少,自己手动整理汇集. 第一章:安装 第一节:下载go语言 第二节:windows 安装 go语言 第三节: 第二章:基本语法 第一节:类型 .
- jQuery总体架构
第一章 总体架构 1.设计理念 jQuery的理念就是“写更少的代码,做更多的事”,而且做到代码的高度兼容性. 2.总体架构 大致可以分为三个部分:构造模块,底层支持模块和功能模块. 3.使用自调用 ...
- ABAP中RETURN与EXIT语句的区别
EXIT:1) EXIT如果出现在循环中,退出的是整个循环操作,.程序会从循环结束处开始继续执行,其作用相当于Java与C++中的break.2)EXIT如果出现在循环之外,退出的是当前执行的程序块( ...
- CXF:通过WebService上传文件,包括大文件的处理
参考网上文章,用CXF发布上传文件接口,并上传大文件的测试. 框架:spring3.1+cxf2.7.6 1.定义文件类实体 import javax.activation.DataHandler; ...
- 超人学院二期学员分享hadoop工作经验
定于2月17日--2月23日的某一天,邀请咱们学员分享一下hadoop工作经验.对于没工作过的同学或者没从事过hadoop工作的同学,抓住机会啊,你可以提前准备自己关心的各种问题! 具体时间请关注QQ ...
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- JNI在C 和 C++ 函数实现的不同
在C中,JNI 函数调用由“(*env)->”作前缀,目的是为了取出函数指针所引用的值. 在 C++ 中,JNIEnv 类拥有处理函数指针查找的内联成员函数. 下面这两行代码访问同一函数,但每种 ...
- 与TableView插入、删除、移动、多选,刷新控件
一.插入.删除.移动.多选 方法一: Cell的插入.删除.移动都有一个通用的方法,就是更新tableView的数据源,再reloadData,这样做实现上是简单一点,但是reloadData是刷新整 ...