PHP网站制作之PHP开辟者常犯的10个MySQL毛病
刚开始因为习惯于ASP格式的写法,总是在这些方面出现问题,自己还总是找不到问题所在,这就提醒了自己,在写代码的时候一定要认真,不能粗心地老是少个“;”或者字母大小写不分,要不然很可能找半天都找不到错误。 数据库是WEB大多半使用开辟的基本。假如你是用PHP,那末大多半据库用的是MYSQL也是LAMP架构的主要局部。PHP看起来很复杂,一个初学者也能够几个小时内就可以入手下手写函数了。然而创立一个不乱、牢靠的数据库确需求工夫和经历。上面就是一些如许的经历,不单单是MYSQL,其他数据库也一样可以参考。
1、利用MyISAM而不是InnoDB
MySQL有良多的数据库引擎,单普通也就用MyISAM和InnoDB。
MyISAM是默许利用的。然而除非你是创立一个十分复杂的数据库或只是实行性的,那末到大多半时分这个选择是毛病的。MyISAM不撑持外键的束缚,这是包管数据完全性的精髓地点啊。别的,MyISAM会在添加或更新数据的时分将全部表锁住,这在今后的扩大功能上会有很大的成绩。
处理举措很复杂:利用InnoDB。
2、利用PHP的mysql办法
PHP从一入手下手就供应了MySQL的函数库。良多法式都依附于mysql_connect、mysql_query、mysql_fetch_assoc等等,然而PHP手册中建议:
假如你利用的MySQL版本在4.1.3以后,那末激烈建议利用mysqli扩大。
mysqli,或说MySQL的初级扩大,有一些长处:
有面向对象的接口
prepared statements(预处置语句,可以无效避免SQL-注入进击,还能进步功能)
撑持多种语句和事务
别的,假如你想撑持多半据库那末应当思索一下PDO。
3、不外滤用户输出
应当是:永久别信任用户的输出。用后真个PHP来校验过滤每条输出的信息,不要信任Javascript。像上面如许的SQL语句很轻易就会被进击:
$username = $_POST["name"];
$password = $_POST["password"];
$sql = "SELECT userid FROM usertable WHERE username='$username'AND password='$password';"; // run query...
如许的代码,假如用户输出”admin’;”那末,就相当于上面这条了:
SELECT userid FROM usertable WHERE username='admin';
如许入侵者就可以不输出暗码,就经由过程admin身份登录了。
4、不利用UTF-8
那些英美国度的用户,很少思索言语的成绩,如许就形成良多产物就不克不及在其他中央通用。还有一些GBK编码的,也会有良多的费事。
UTF-8处理了良多国际化的成绩。固然PHP6才干对照完善的处理这个成绩,然而也无妨碍你将MySQL的字符集设置为UTF-8。
5、该用SQL的中央利用PHP
假如你刚接触MySQL,有时分处理成绩的时分能够会先思索利用你熟习的言语来处理。如许便可能形成一些华侈和功能对照差的情形。好比:盘算均匀值的时分不合用MySQL原生的AVG()办法,而是用PHP将一切值轮回一遍然后累加盘算均匀值。
别的还要注重SQL查询中的PHP轮回。凡是,在获得一切了局以后再用PHP来轮回的效力更高。
普通在处置大批数据的时分利用强无力的数据库办法,更能进步效力。
6、不优化查询
99%的PHP功能成绩都是数据库酿成的,一条糟的SQL语句能够让你的全部法式都十分慢。MySQL的EXPLAIN statement,Query Profiler,many other tools的这些东西可以帮你找出那些油滑的SELECT。
7、利用毛病的数据类型
MySQL供应一系列数字、字符串、工夫等的数据类型。假如你想存储日期,那末就是用DATE或DATETIME类型,利用整形或字符串会让工作加倍庞杂。
有时分你想用本人界说的数据类型,例如,利用字符串存储序列化的PHP对象。数据库的添加能够很轻易,然而如许的话,MySQL就会变得很粗笨,并且今后能够招致一些成绩。
8、在SELECT查询中利用*
不要利用*在表中前往一切的字段,这会十分的慢。你只需求掏出你需求的数据字段。假如你需求掏出一切的字段,那末能够你的表需求更改了。
9、索引缺乏或过度索引
普通来讲,应当索引呈现在SELECT语句中WHERE前面一切的字段。
例如,假设咱们的用户表有一个数字的ID(主键)和email地址。登录以后,MySQL应当经由过程email找到响应的ID。经由过程索引,MySQL可以经由过程搜刮算法很快的定位email。假如没有索引,MySQL就需求反省每项纪录直到找到。
如许的话,你能够想给每个字段都添加索引,然而如许做的效果就是在你更新或添加的时分,索引就会从头做一遍,当数据量大的时分,就会有功能成绩。所以,只在需求的字段做索引。
10、不备份
或许不常产生,然而数据库损毁,硬盘坏了、办事中断等等,这些城市对数据形成灾害性的损坏。所以你必定要确保主动备份数据或保留正本。
11、别的:不思索其他数据库
MySQL多是PHP用的最多的数据库了,然而也不是独一的选择。 PostgreSQL和Firebird也是竞争者,他们都开源,并且不被某些公司所掌握。微软供应SQL Server Express,Oracle有10g Express,这些企业级的也有收费版。SQLite关于一些小型的或嵌入式使用来讲也是不错的选择。
在学习中,我也一直这样要求着自己。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标, 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。 实践是检验自己会不会的真理。 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
页:
[1]