仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1047|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP开辟者常犯的10个MySQL毛病

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:33:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚开始因为习惯于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关于一些小型的或嵌入式使用来讲也是不错的选择。
在学习中,我也一直这样要求着自己。
因胸联盟 该用户已被删除
沙发
发表于 2015-2-4 02:07:41 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
莫相离 该用户已被删除
板凳
发表于 2015-2-5 09:50:03 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
地板
发表于 2015-2-5 19:18:31 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
深爱那片海 该用户已被删除
5#
发表于 2015-2-27 18:23:40 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
冷月葬花魂 该用户已被删除
6#
发表于 2015-3-4 05:33:52 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
爱飞 该用户已被删除
7#
发表于 2015-3-11 14:09:55 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
蒙在股里 该用户已被删除
8#
发表于 2015-3-20 08:31:13 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
不帅 该用户已被删除
9#
发表于 2015-3-25 13:53:00 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
admin 该用户已被删除
10#
发表于 2015-4-9 11:37:13 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
老尸 该用户已被删除
11#
发表于 2015-4-23 01:46:12 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
第二个灵魂 该用户已被删除
12#
发表于 2015-6-10 15:30:06 | 只看该作者
实践是检验自己会不会的真理。
乐观 该用户已被删除
13#
发表于 2015-6-18 05:22:54 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
兰色精灵 该用户已被删除
14#
发表于 2015-6-30 20:54:30 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
只想知道 该用户已被删除
15#
发表于 2015-7-5 00:55:01 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
活着的死人 该用户已被删除
16#
发表于 2015-7-8 05:15:09 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
小妖女 该用户已被删除
17#
发表于 2015-7-10 12:13:41 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
谁可相欹 该用户已被删除
18#
发表于 2015-7-11 08:16:58 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
小女巫 该用户已被删除
19#
 楼主| 发表于 2015-7-13 18:44:09 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 15:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表