危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览19378932

PHP实战攻略——SQL篇

大家好,在上两个月中我们学习了如何在界面管理工具中对数据库进行基本的增删改查操作,那么在本章中,我们本来应该学习在php中如何操作MSSQL,但是很不幸的是,在php5.3.2以后,就已经不支持传统的php拓展的方式来进行数据库操作,如果是以前的版本,可以通过添加对phpmssql的引用来添加对mssql数据库操作的支持。但是现在似乎这个已经用不了了,微软发布了一个新的用于php的MSSQL驱动,但是依然很不幸,我的电脑调试了半天,依然抽风中,无奈之下,我只能稍稍更改原有计划.先来讲mysql了。那么既然都是支持sql的数据库,那么我们之前学过的都还管用,但是换了数据库.很多东西都得换掉了。现在我们要管理nyg ql就肯定不能用以前的工具。目前比较常用的是一套叫做phpmyadmin的管理系统,这套系统wampserver已经给我们弄好了,点开wampserver单我们就可以看到有一项:pbpmyadmin,进去之后我们可以看到并没有提示登录就已经可以对数据库进行操作了。phpmyadmin已经自动登录上去了。mysql出身就不像mssql那样豪华,不过现在还好,据说是被Oracle公司收购了,也算是嫁人豪门,不过神似没捞到什么好处,依然不是很好用。很多时候,我们还得依靠输入命令的方式来管理数据库,不过好在现在第三方管理软件很多,简化了很多操作,像oracle也是一样,如果你不用第三方软件,也得敲命令,很是蛋疼。我们在wamp的菜单里面可以找到mysql,mysql的子菜单中有一个叫做MySql console的项,我们初期就在这里进行管理,后期我们再用phpmyadmin。虽然控制台管理比较难,但是也方便大家打下坚实的基础。我们打开Mysqlconsole,看到控制台输出Enter password:,这个不用说是什么意思了吧?把密码输进去,如果你没有设置过密码,就默认为空,我这里直接敲回车就登录成功,一排说明之后,我们看到了最后一行有个mysql>的输出,表示mysql已经在准备听候吩咐了。我们来查查它的户口。输入select version();,这样我们就可以让它报出它的版本号。注意这里末尾一定要打分号,否则它认为你的话没说完,还等你说完。执行之后,我们可以看到控制台中输出了我们要的内容,还发现mysql的程序员还真有耐性,还好好排了下布局。

这就算是我们跟mysql打个招呼吧。不知道大家有没有尝试过不打分号就回车会怎么样?没错,行前面的提示符不再是”mys ql>”,而是”>”,表示mysql依然还在等待你的输入,对此官方文档给出了一句描述让我觉得很有意思也很有道理:“提示符是你的朋友,因为它提供有价值的反馈,如果使用该反馈,将总是知道:nysql正在在等待什么。”没错,我们既然学习程序,学习计算机,我们就要学会从正确的地方获取我们想要的信息。这一点是很重要的,试想以后调试错误,找对地方可能你只要花两分钟,找错你可能要花两天,就是这样。所以从这一点上,我非常赞同这句话,那么我把官方给出的几种提示符都说一下:mysql>准备好接受新命令。

->等待多行命令的下一行。

'>等待下一行,等待以单引号(…”)开始的字符串的结束。

"">等待下一行,等待以双引号(“”’)开始的字符串的结束。

`>等待下一行,等待以反斜点(…)开始的识别

符的结束。

/">等待下一行,等待以/*开始的注释的结束。

那么,大家一定很好奇,我们现在要进行建库建表操作怎么办呢?建库建表其实都可以用sql语句来实现,语法如下:create database库名。

我这里建了一个名为hacktest2的数据库,执行之后看到输出”Query OK, l  row aected (0.05 sec)”就说明成功,那么弄完数据库就要建表了,不过在建表之前,首先要告诉mysql我们要在哪个数据库里面建表,就要先使用use库名先选择数据库,执行完usehacktest2会输出“Database changed”,接下来就可以开始建表了,建表和建库有区别,因为表的话,我们要考虑有哪些字段,语法如下:

create table表名(字段1字段类型,字段2字段类型);

我们还是根据上次的配置来建表,一个ID字段,一个name字段。mysql中很多数据类型和mss ql是一样的,比如说v archar和int,那么这里我就写varcbar(1 0》;”。当然,如果大家害怕建表重复,可以通过“show tables;”指令来显示该数据库现有的表,如果没有表,会输出:“Empty set (0.00 sec)”,如果有表,就会显示出表名。好了,建库,建表完成,我们现在来插入一条数据?增删改查的代码都是和以前一样的,以前都是教大家标准的sql语句,所以这里也通用。我这里插入一个id为1,名字为张三的数据。然后大家同样可以用select语句来查看表中的数据。大家看了可能就觉得悲剧了,输入的是张三,查询出来是乱码…这个问题我们后面再说,现在大家就是熟悉一下mysqL的基本操作就OK了。大家如果建好表以后,忘了某个字段名称,还可以通过“describe表名”来查看表的结构。

好了,那么现在总的来说,mysql的基本操作大家应该都会了。对于php来说,环境的配置绝对要比其他语言麻烦很多。这个是没有办法的,毕竟要兼容那么多操怍系统,在下一章我们就要来学习一下,配置php的开发环境。之前我们使用的是ZendStudio+wampserver的傻瓜式配置。这样虽然也可以运行,但是作为技术人员,只会用傻瓜配置的话,就遭人耻笑了。文章我会教大家一步一步配置阿帕奇,php和mysql,因为计划突然被打乱,所以我也只能尽量调整我的写作顺序。本来mysql的操作我是打算等大家用数据库都比较熟悉了之后再来学习。但是没办法,这个月除了教大家基本的mysql的操作以外,还要说一下phpmyadnin的-些基本操作。—般情况下,我们如果单独配置的话,Phpmyadmin是不会自动登录的,是需要进行用户名密码验证的,但是这里已经配置好了我也就不多说,具体的情况我们在下个月详细讲解配置的时候再说。一般来说,我们自己的机器上,环境和权限各方面都可以由我们进行调整.所以也可以完整她看到phpmyadmin的所有功能,其实如果大家自己买的数据库服务的话,权限很少很少的。什么建库之类的东西,根本用不了,不过现在有权限,就方便多拉。登录进来以后,第一个页面显示的东西很少,显示了mysql版本,服务器版本和phpmyadmin的相关文档之类,估计平时都很少有人注意。还有就是页面左边我们可以对编码和phpmyadmin的外观进行一些细微的调整。几乎都是没什么用的。比较重要的就是页面底部有可能会显示一些服务器配置不对的警告,这些警告是很有用的。那么我们看右边这个框架页的顶部,可以看到一串导航:

数据库选项进去之后是对数据库,表和数据进行基本操作,SQL选项进去以后就是执行SQL语句,状态选项主要是用来查看服务器状态,二进制日志,进程这些一般我们很少用的,那是数据库维护人员的事情,不过如果自己既是开发人员,又是维护人员的话,肯定还是要下来多学习一点。权限的话,主要是对数据库用户进行权限分配,这个很有用的。导出导入是用来备份/还原数据库的。变量的话,是查看当前变量,这个一般很少用,字符集的话,更少了,一般我们都固定用utf-8,也有时候会用GBK;他都很少了。引擎是查看当前存储引擎,不过这玩意我至今没用过…复制和同步一般是大型场合的时候才会用,如果我们只是开发个几张表的小系统,很少用。最后设置就是对phpmyadmin的设置页面啦,其实保持默认挺好,当然不排除有人使用习惯比较独特或者审美比较独特的可以修改一下以适应自己的需求。接下来我们就讲解一下基本的php操作mysql的理论,实践先不说下,首先,我们知道,mysql是一个独立的软件,而我们写的php程序和PHP服务器,也构成了一个软件,现在我们要通过php来操Fmysql,说白了,其实是两个软件之间的数据互访。平时我们在一个程序中要实现数据访问很容易,但是在程序和程序之间怎么做呢?我们可以尝试将两个程序试想为两个水池,如果需要将两个水池连通,我们—般会怎么做呢?最简单的办法,就是用一个水管讲两个池子连接起来。那么程序我们也可以虚拟出一个水管,将两个程序连接起来,不过大家不用害怕,这水管有人已经弄好了,只要我们简单地调用一个函数即可。程序与数据库之间的联通管道一般我们称之为数据库连接。这是最基本的原理,但是,可能很多人有点蒙,我们用命令行也好,用phpmyadmin也好,都是很好操作数据库的,现在用php代码来操作,会不会很难?我个人觉得是不难的,因为只要有目的,SQL远远比其他语言更简单。目的明确,知道我需要让数据库做什么,最重要的还要知道数据库能做什么,那么学习起来就会很容易,php和我们在命令行中管理是一样的思路,只是数据库连接需要我们自己获取,就是取得连接,选择数据库,执行此操作,处理数据,关闭连接,释放资源,短短的几步就可以完全镇定。

好了,那么本章的内容就到这里吧,由于理论的内容居多,后面会逐步转入实践,敬请期待。同时对我电脑抽风导致的写作计划打乱和文章知识散乱,还希望大家谅解和包涵。毕竟电脑家里人不懂,有时可能中个病毒导致文件毁坏之类的也有可能。病毒好弄掉,损坏的文件难修复呀,所以危险漫步这里再次真诚给大家道个歉。

相关推荐