|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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关于一些小型的或嵌入式使用来讲也是不错的选择。
在学习中,我也一直这样要求着自己。 |
|