在2012_01_07PHP学习(MySQL)
PHP看起来非常简单,一个初学者可以在几个小时内开始编写函数。但是要建立一个稳定可靠的数据库需要时间和经验。1。而不是使用InnoDB表
MySQL有很多数据库引擎、MyISAM和InnoDB中使用同样的方式。
MyISAM是默认使用。但除非你建立一个非常简单的数据库或者只是实验,那么这个选择是大多数的time.myisam错不支持外键约束,这是保证数据完整性的本质。此外,MyISAM会锁定整个表数据时,添加或更新,这将在未来的可扩展性,有一个大问题。
解决方法很简单:使用InnoDB。
2。使用PHP的mysql方法
PHP提供了MySQL的函数库,从一开始,很多程序都依赖于mysql_connect,mysql_query,mysql_fetch_assoc,等等,但PHP手册的建议:
如果你使用的MySQL版本后4.1.3,那么强烈建议使用mysqli扩展。
mysqli,或先进的扩展的MySQL,具有一定的优势:
面向对象的接口
预处理语句(预处理语句,能有效防止SQL注入攻击,还能提高性能)
支持多种语句和事务
此外,如果你想支持多种数据库,你应该考虑PDO。
三.不要过滤用户输入
应该是:不要相信用户的输入。使用后端PHP检查和过滤输入的信息,不要相信javascript.sql陈述如下容易受到攻击:
用户名_post美元美元{ =名字};
密码_post美元美元{ =密码};
为SQL = 选择用户名从9用户管理表,用户名=美元=美元username'and密码密码;查询; / /运行…
此代码,如果用户输入admin,那么,它与下面的相同:
选择9用户管理表,用户名= 'admin '用户名;
这样,入侵者就可以以admin身份登录,而无需输入密码。
4。不要使用UTF-8
那些在美国和美国有语言问题考虑较少,因此,许多产品不能用于其他地方。有些GBK码,还有很多麻烦。
UTF-8解决了很多国际问题。虽然php6可以很好的解决这个问题,它不会阻止你设置MySQL UTF-8字符。
5。在sql中使用PHP
如果你刚接触MySQL,你有时可能想用你熟悉的语言来解决问题。这可能会造成一些浪费和性能较差。例如,当平均值计算,AVG()原产于MySQL的方法是不适用的,而不是循环的所有值,PHP的累积平均值。
还要注意SQL查询中的PHP循环。通常,在得到所有结果之后,PHP的循环效率更高。
一般来说,在处理大量数据时使用强数据库方法,这是更有效的。
6。查询优化
PHP性能问题的99%是由数据库引起的,坏的SQL语句可能会使整个程序非常慢。
7。使用错误的数据类型
MySQL提供了一系列的数据类型,如数字、字符串、时间,等等。如果你想存储一个日期,然后使用日期或日期时间型,使用塑料或字符串可以使事情更加复杂。
有时您希望使用您定义的数据类型,例如,使用字符串存储序列化的PHP对象。
8。使用SELECT查询*
不要使用*返回表中的所有字段,这是非常慢的。只需要取出所需的数据字段。如果需要取出所有字段,那么可能需要更改表。
9。索引或overindexed
一般来说,它应该被索引到SELECT语句后面的所有字段中。
例如,如果我们的用户表有许多ID(主键)和电子邮件地址。登录后,MySQL应该通过电子邮件找到相应的ID。通过索引,MySQL可以通过搜索算法快速找到电子邮件。如果没有索引,MySQL需要检查每个记录,直到找到为止。
在这种情况下,您可能要添加索引的每一个领域,但这样做的后果是,当你更新或增加,指数将重做。当数据量很大时,会出现性能问题。
10。非备份
它可能不会经常发生,但是数据库被损坏,硬盘坏了,服务被停止了,等等,所有这些都会对数据造成灾难性的破坏。所以你必须确保你自动备份数据或者保存拷贝。
11。另一种:不考虑其他数据库。
MySQL可以使用PHP的最大的数据库,但它并不是唯一的choice.postgresql火鸟也是竞争对手,这些都是开源的,不是由一些公司控制。微软提供的SQL Server Express,Oracle 10g Express,和这些企业的水平也有一个免费的version.sqlite也是小或嵌入式应用一个好的选择。