background image

对于大多数

web 应用来说,数据库都是一个十分基础性的部分。如果你在使用 PHP,那么

你很可能也在使用

MySQL—LAMP 系列中举足轻重的一份子。

  对于很多新手们来说,使用

PHP 可以在短短几个小时之内轻松地写出具有特定功能的

代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾
经犯过的最严重的

11 个 MySQL 相关的错误(有些同样也反映在其他语言/数据库的使用

)。。。

  

1.使用 MyISAM 而不是 InnoDB

  

MySQL 有很多数据库引擎,但是你最可能碰到的就是 MyISAM 和 InnoDB。

  

MySQL 默认使用的是 MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你

在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性是非常重
要的,但

MyISAM 都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都

被锁定了,当使用量增加的时候这会产生非常差的运行效率。

  结论很简单:使用

InnoDB。

  

2.使用 PHP 的 mysql 函数

  

PHP 自产生之日就提供了 MySQL 库函数(or near as makes no difference)。很多应用

仍然在使用类似

mysql_connect、mysql_query、mysql_fetch_assoc 等的函数,尽管 PHP

手册上说:

  如果你在使用

MySQL v4.1.3 或者更新版本,强烈推荐使用您使用 mysqli 扩展。

  

mysqli(MySQL 的加强版扩展)有以下几个优点:

  可选的面向对象接口

  

prepared 表达式,这有利于阻止 SQL 注入攻击,还能提高性能

  支持更多的表达式和事务处理

  另外,如果你想支持多种数据库系统,你还可以考虑

PDO。

  

3.没有处理用户输入

  这或者可以这样说

#1:永远不要相信用户的输入。用服务器端的 PHP 验证每个字符串,

不要寄希望与

JavaScript。最简单的 SQL 注入攻击会利用如下的代码: