数据库是WEB大大都应用开发的基本。如不美观你是用PHP,那么大大都据库用的是MYSQL也是LAMP架构的主要部门。
) ^8 _2 b9 U/ i, t8 D; d3 ?& O! I- B PHP看起来很简单,一个初学者也可以几个小时内就能起头写函数了。可是成立一个不变、靠得住的数据库确需要时刻和经验。下面就是一些这样的经验,不仅仅是MYSQL,其他数据库也一样可以参考。5 Y a Q' B3 @
1、使用MyISAM而不是InnoDB
% @% ~0 `" n( K& C( b, a MySQL有良多的数据库引擎,单一般也就用MyISAM和InnoDB。% @# Z [: }% h. y2 a
MyISAM是默认使用的。可是除非你是成立一个很是简单的数据库或者只是尝试性的,那么到大大都时辰这个选择是错误的。MyISAM不撑持外键的约束,这是保证数据完整性的精髓地址啊。此外,MyISAM会在添加或者更新数据的时辰将整个表锁住,这在往后的扩展机能上会有很大的问题。3 W) C. d2 Z: X5 X
解决法子很简单:使用InnoDB。+ @' z- p9 ?( y4 o0 I6 M8 c3 c
2、使用PHP的mysql体例
' k+ A2 h" M+ [8 e5 F# n PHP从一路头就供给了MySQL的函数库。良多轨范都依靠于mysql_connect、mysql_query、mysql_fetch_assoc等等,可是PHP手册中建议:
6 [: ~% c, c( Q( z 如不美观你使用的MySQL版本在4.1.3之后,那么强烈建议使用mysqli扩展。3 A; l' o6 q- q. K0 l
mysqli,或者说MySQL的高级扩展,有一些利益:
8 y0 w2 c* }; P 有面向对象的接口+ h/ _: b( A# r2 e7 A& R
prepared statements(预措置语句,可以有用防止SQL-注入抨击袭击,还能提高机能)
7 A* _" m# m" {* Q( d 撑持多种语句和事务" i1 u! V" j" V* {% O2 O/ D- t7 w
此外,如不美观你想撑持大都据库那么应该考虑一下PDO。* j6 l4 R/ J4 P. @1 d4 e( Q0 `
3、不外滤用户输入, x- Z( ^ C# |) C* `2 ~& l8 F
应该是:永远别相信用户的输入。用后端的PHP来校验过滤每一条输入的信息,不要相信Javascript。像下面这样的SQL语句很轻易就会被抨击袭击:6 E8 j/ V' J5 j& g6 f+ z
view sourceprint?. `& B; g0 a/ g) x
1 $username = $_POST["name"];7 L4 z/ U+ b1 V0 v3 Y% H
2 $password = $_POST["password"];
* c& W+ z6 n7 M. H* \! c0 a( B 3 $sql = "SELECT userid FROM usertable WHERE username=?$username?AND password=?$password?;"; // run query...3 j, @2 M+ v. J* j0 F% P, q& L; }" _* ]
这样的代码,如不美观用户输入"admin';"那么,就相当于下面这条了:
1 m" N6 x9 W; L; s+ T% f9 ~ view sourceprint?+ Y( q1 M2 {% W3 Y" A
1 SELECT userid FROM usertable WHERE username=?admin?;0 @$ E0 G" g. K" s' g5 a, u
这样入侵者就能不输入密码,就经由过程admin身份登录了。 |