[php]一、认识Mysql与PDO[教程]

如果叫大家用PHP设计一个网络通讯录,大家会怎么做呢?
要求:
1.可以添加无限多个通讯录,每个通讯录里的联系人个数不限。但是我们想要限制的话又可以随意限制
2.每个联系人都可以记录其姓名、电话号码、QQ、E-mail、所在地区、职业、爱好、生日等信息
3.可以查看,并很方便地搜索到任何一个或多个联系人,比如所有拥有9位数QQ,使用163邮箱,而且喜欢打篮球的联系人。可以按需求对找到的信息进行排序,比如按年龄大小排序。
4.可以很方法地进行修改或批量修改记录,比如:(假设)虎绿林邮箱换域名了,由yourname@hu60.cn换成了yourname@h60.cn,可以一次性对所有使用虎绿林邮箱的联系人的信息修改。删除也很方便,比如可以把所有生日和QQ号不明的联系人一次性删除了。
5.可以实时进行各种统计,比如列出同一职业的人数、列出拥有8位QQ号的人数等,而且也能随时列出这样人的详细信息
6.支持联系人的快速导入导出。
……
看到这儿,我想没有人还会想要用这种原始的方法了吧:
为每一个通讯录建一个目录,在里面的每一个文本文件记录这每一个联系人的信息。查看的时候遍历文件夹里的文件……
首先查看时的效率就很低,第3、4、5项用这种方法的话你和服务器都会被这种繁复的工作方式给烦死。
那我们该怎么办呢?想想我们今天的主题。对,我们只要使用Mysql数据库就可以轻松地做到这些功能了!我们的教程就从这里开始,在与大家共同实现通讯录的各个功能之时,让大家了解Mysql、了解PDO。当然,一番专业的介绍是免不了的。
「未完,已续)
Mysql是一个小型关系型数据库。简单说来,关系型数据库就是数据库里面的数据不是各自独立存在的,而是相互之间可以有着种种的联系。至于关系型数据库的更详细介绍,或者想了解更多关于Mysql的信息,自己百度百科吧:)
下面我们来介绍PDO吧。
从宏观上来说,PDO(PHP Date Object,PHP数据对象)是一个数据库抽象层。所谓数据库抽象层,很重要的一个特点就是我们对数据库的使用与数据库的类型无关。使用PDO时,如果我们尽量避免某数据库所提供的独有功能(就是其他数据库没有的功能),我们便可以只修改一下数据库连接参数,就可以在Oracle、SQL Server、Mysql、SQLite等众多数据库间自由地切换,其他代码完全不用任何修改!
使用PDO,我们还可以实现同时使用不同的数据库,或者借助PDO方便地在两种不同的数据库之间同步数据。
另外,在PDO的预处理功能帮助下,一切SQL注入的网站攻击方法都成浮云,而且数据查询的效率也变得更高。PDO甚至还可以帮助让你像读/写文件那样读写数据库,数据库事务功能则可以助你防止“数据更新到一半就挂掉了”的悲剧情况。另外,方便的存储过程、变量绑定……这些如何不让你心动?
当然,如果这些你看不明白,也没关系,我们在后面会给你机会,让你亲身体验这些到底是什么东西。
不管怎么宏观,我们还是要回到具体的应用上来的。
PDO是PHP5的一个内置类,在PHP5.1及以上版本中是默认开启的,大家可以放心使用。
PDO使用了“数据库驱动”来实现对多种数据库的支持。如果你是一个数据库开发者,你也可以写一个数据库驱动,让你的数据库能在PDO里使用。
至于怎样添加PDO驱动,自己寻找方法吧。由于我们大部分同学都在使用虚拟主机,我们根本无法修改配置,更无法添加驱动了。不过一般情况下空间商都会为我们配置好的。
当然我们也有可能碰到倒霉的情况,那就是PDO的Mysql驱动没有被加载,如果你遇到这样的情况,可以和空间商联系,让他们帮你添加。或者的干脆换一个空间吧:)
在下一篇教程中我们就可能遇到这样的情况了。
刚才说了,PDO是一个类。那么什么是类呢?
好吧,我就来给不明白的同学补一下这方面的知识吧。
「类与对象」
先来点“抽象”的:
如果人是一个类,那么你就是人类的一个对象。
但是,类并不是一个已存在的事物的集合,因为就在这一秒,不知道又有多少新的人类对象出生,有多少人类对象死亡。
类,是一个物种。
你无法直接控制整个物种。想要控制整个物种,你唯一的选择就是去控制物种里的每一个个体。
类与对象也是一样的。你不能去直接一个类,要想使用一个类,你必须要从类里面实例化一个或多个对象,然后使用这些对象完成你的工作。
实例化:从一个类中诞生一个新的对象的过程(出生)。
在PHP中,使用new关键字实例化一个对象:
$db=new pdo;
这样,变量$db就是pdo类的一个对象了。
但是在很多时候,我们想要让一个对象在“出生”的那一瞬间就做一些事情,就像人类的每个对象在刚出生时都会哇哇大哭一样。
我们把对象能做的事叫做“方法”。比如思考是人类的一个方法,PDO也有很多方法。
我们这样调用一个对象的方法:
$db->exec();
和你调用函数很相似,exec是方法名,后面接着括号。如果方法有参数,括号里面也是参数列表。
和调用函数不同,你可以调用$db的exec方法,如果你再$db2=new pdo;,你还可以调用$db2->exec();,它们互不影响。
然后,我们又把对象在一“出生”时就做的事叫做“构造方法”,比如人类的构造方法是“大哭”,如果宝宝哭不出来,医生可是很紧张的。
PDO也有构造方法。
当我们在$db=new pdo;的时候,pdo的构造方法就被调用了,它不需要我们专门去调用。
我们也可以给构造方法传递参数:
$db=new pdo('mysql:dbname=mytestdb;host=127.0.0.1','testuser','testpassword');
我们传递了三个参数给对象$db的构造方法,至于它们代表的意思是什么?
下一篇再说吧:)
回复列表(7|隐藏机器人聊天)
添加新回复
回复需要登录