数码资讯
PHP程序员最常犯的11个MySQL错误
对于许多新手来说,使用PHP可以在几个小时内轻松地编写带有特定函数的代码。但是,要建立一个稳定可靠的数据库需要一些时间和相关技能。下面列出了我曾经犯过的11个最严重的MySQL错误(有些也反映在使用其他语言/数据库)中。 1。而不是使用InnoDB表 MySQL有很多数据库引擎,但是你最有可能遇到的
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
对于许多新手来说,使用PHP可以在几个小时内轻松地编写带有特定函数的代码。但是,要建立一个稳定可靠的数据库需要一些时间和相关技能。下面列出了我曾经犯过的11个最严重的MySQL错误(有些也反映在使用其他语言/数据库)中。
1。而不是使用InnoDB表
MySQL有很多数据库引擎,但是你最有可能遇到的是MyISAM和InnoDB。
MySQL默认使用的是MyISAM。然而,在许多情况下,这是一个很好的选择,除非你正在创建一个非常简单的实验数据库外键约束或事务处理数据的完整性是非常重要的,但MyISAM并不支持这些。另外,当一个记录被插入或更新,整个数据表是锁着的,这会导致非常差的运行效率时,使用量的增加。
结论很简单:使用InnoDB。
2。使用PHP的mysql函数
PHP MySQL提供的库函数(或没有区别近)从其产生之日起,许多应用程序仍在使用功能mysql_connect,mysql_query,mysql_fetch_assoc,等等,虽然PHP手册说:
如果你使用的是MySQL v4.1.3或更新的版本,我们强烈建议您使用mysqli扩展。
Mysqli(MySQL的加强版)具有以下优点:
可选面向对象接口
准备好的表达式,它有助于防止SQL注入攻击并提高性能。
支持更多的表达式和事务处理
此外,如果你想支持多种数据库系统,你也可以考虑使用。
三.没有用户输入的处理
或者你可以说# 1这样:永远不要信任用户的输入,验证每个字符串与服务器端PHP,不要寄希望于Javascript。最简单的SQL注入攻击将利用下面的代码:
复制代码代码如下所示:
用户名_post美元美元{ =名字};
密码_post美元美元{ =密码};
为SQL = 选择用户名从9用户管理表,用户名=美元=美元username'and密码密码;;
运行查询…
刚进入admin'in用户名字段;这将是黑色的,和相应的SQL语句如下:
复制代码代码如下所示:
选择9用户管理表,用户名= 'admin '用户名;
狡猾的黑客可以用admin登录,他们不需要知道密码,因为密码部分是带注释的。
4。没有使用UTF-8
在美国、英国和澳大利亚,除了英语以外,我们很少考虑其他语言。我们已经很好地完成了我们的杰作,发现它们在别处不正常运行。
UTF-8 has solved a lot of international problems.Although it is not well supported before PHP V6.0, this does not affect you to set the MySQL character set to UTF-8.
5,相对于SQL,更喜欢php
如果你很快接触到MySQL,你会喜欢用你的语言来解决问题,这会导致一些冗余和低效的代码。例如,你不使用MySQL的AVG()函数,但是你首先要询问记录集的值,然后使用PHP循环来计算平均值。
另外,注意PHP循环中的sql查询。一般来说,执行查询比在结果中迭代更有效。
所以,在分析数据的时候,请利用数据库系统的优势,了解一些sql的知识会有很大的好处。
6。没有数据库查询优化
PHP性能问题的99%是由数据库引起的,只有一个糟糕的SQL查询会使Web应用程序完全瘫痪。
7。数据类型不能正确使用。
MySQL提供的数据类型,如数字、字符串和日期。如果你想存储时间,使用日期或日期时间型。如果你当时使用整数或字符串类型,它将使SQL查询非常复杂。前提是可以使用整数或字符串来定义该类型。
许多人倾向于不经授权就定制某些数据的格式,例如,使用字符串存储序列化的PHP对象。这样的数据库可能更容易管理,但它会使MySQL成为一个糟糕的数据存储,并可能导致稍后的失败。
8。在查询中使用*
永远不要使用*返回数据表所有列的数据。这是惰性:你应该提取你需要的数据。即使你需要所有的字段,你的数据表也不可避免地会改变。
9。没有索引或过度使用索引
一般原则是SELECT语句中的WHERE子句应该被索引。
例如,假设我们有一个用户表,包括数字ID(主键)和电子邮件地址。当您登录时,MySQL必须查找基于电子邮件正确的ID。如果使用索引(这里是email),那么MySQL可以使用更快的搜索算法来定位email,或即使在实时实现。否则,MySQL只能检查每个记录的顺序直到正确的电子邮件地址是。
有些人会向每个字段添加索引。不幸的是,在执行插入或更新之后,这些索引需要重新生成,这将影响性能。因此,只在需要时添加索引。
10,忘记备份!
虽然很少见,但数据库仍有崩溃的危险,硬盘可能损坏,服务器可能崩溃,Web主机提供商可能破产!丢失MySQL数据将是灾难性的,因此请确保您已经使用了自动备份或已复制到位。
11,奖金错误-不考虑使用其他数据库
为PHP,MySQL可能是使用最广泛的数据库系统,但它不是唯一的choice.postgresql火鸟是最强大的竞争对手:都是开源的,没有经过公司收购。微软提供的SQL Server Express,Oracle提供了10G的表达,两者都是免费的企业数据库版本。有时,一个较小的Web应用程序或嵌入式应用,SQLite是一个可行的替代方案。
水平有限,欢迎拍砖!!
文本链接:PHP开发人员犯的10个MySQL错误
西蒙兹:原来的标题是10,事实上作者列举了11个,所以我做了一个小的变化。
1。而不是使用InnoDB表
MySQL有很多数据库引擎,但是你最有可能遇到的是MyISAM和InnoDB。
MySQL默认使用的是MyISAM。然而,在许多情况下,这是一个很好的选择,除非你正在创建一个非常简单的实验数据库外键约束或事务处理数据的完整性是非常重要的,但MyISAM并不支持这些。另外,当一个记录被插入或更新,整个数据表是锁着的,这会导致非常差的运行效率时,使用量的增加。
结论很简单:使用InnoDB。
2。使用PHP的mysql函数
PHP MySQL提供的库函数(或没有区别近)从其产生之日起,许多应用程序仍在使用功能mysql_connect,mysql_query,mysql_fetch_assoc,等等,虽然PHP手册说:
如果你使用的是MySQL v4.1.3或更新的版本,我们强烈建议您使用mysqli扩展。
Mysqli(MySQL的加强版)具有以下优点:
可选面向对象接口
准备好的表达式,它有助于防止SQL注入攻击并提高性能。
支持更多的表达式和事务处理
此外,如果你想支持多种数据库系统,你也可以考虑使用。
三.没有用户输入的处理
或者你可以说# 1这样:永远不要信任用户的输入,验证每个字符串与服务器端PHP,不要寄希望于Javascript。最简单的SQL注入攻击将利用下面的代码:
复制代码代码如下所示:
用户名_post美元美元{ =名字};
密码_post美元美元{ =密码};
为SQL = 选择用户名从9用户管理表,用户名=美元=美元username'and密码密码;;
运行查询…
刚进入admin'in用户名字段;这将是黑色的,和相应的SQL语句如下:
复制代码代码如下所示:
选择9用户管理表,用户名= 'admin '用户名;
狡猾的黑客可以用admin登录,他们不需要知道密码,因为密码部分是带注释的。
4。没有使用UTF-8
在美国、英国和澳大利亚,除了英语以外,我们很少考虑其他语言。我们已经很好地完成了我们的杰作,发现它们在别处不正常运行。
UTF-8 has solved a lot of international problems.Although it is not well supported before PHP V6.0, this does not affect you to set the MySQL character set to UTF-8.
5,相对于SQL,更喜欢php
如果你很快接触到MySQL,你会喜欢用你的语言来解决问题,这会导致一些冗余和低效的代码。例如,你不使用MySQL的AVG()函数,但是你首先要询问记录集的值,然后使用PHP循环来计算平均值。
另外,注意PHP循环中的sql查询。一般来说,执行查询比在结果中迭代更有效。
所以,在分析数据的时候,请利用数据库系统的优势,了解一些sql的知识会有很大的好处。
6。没有数据库查询优化
PHP性能问题的99%是由数据库引起的,只有一个糟糕的SQL查询会使Web应用程序完全瘫痪。
7。数据类型不能正确使用。
MySQL提供的数据类型,如数字、字符串和日期。如果你想存储时间,使用日期或日期时间型。如果你当时使用整数或字符串类型,它将使SQL查询非常复杂。前提是可以使用整数或字符串来定义该类型。
许多人倾向于不经授权就定制某些数据的格式,例如,使用字符串存储序列化的PHP对象。这样的数据库可能更容易管理,但它会使MySQL成为一个糟糕的数据存储,并可能导致稍后的失败。
8。在查询中使用*
永远不要使用*返回数据表所有列的数据。这是惰性:你应该提取你需要的数据。即使你需要所有的字段,你的数据表也不可避免地会改变。
9。没有索引或过度使用索引
一般原则是SELECT语句中的WHERE子句应该被索引。
例如,假设我们有一个用户表,包括数字ID(主键)和电子邮件地址。当您登录时,MySQL必须查找基于电子邮件正确的ID。如果使用索引(这里是email),那么MySQL可以使用更快的搜索算法来定位email,或即使在实时实现。否则,MySQL只能检查每个记录的顺序直到正确的电子邮件地址是。
有些人会向每个字段添加索引。不幸的是,在执行插入或更新之后,这些索引需要重新生成,这将影响性能。因此,只在需要时添加索引。
10,忘记备份!
虽然很少见,但数据库仍有崩溃的危险,硬盘可能损坏,服务器可能崩溃,Web主机提供商可能破产!丢失MySQL数据将是灾难性的,因此请确保您已经使用了自动备份或已复制到位。
11,奖金错误-不考虑使用其他数据库
为PHP,MySQL可能是使用最广泛的数据库系统,但它不是唯一的choice.postgresql火鸟是最强大的竞争对手:都是开源的,没有经过公司收购。微软提供的SQL Server Express,Oracle提供了10G的表达,两者都是免费的企业数据库版本。有时,一个较小的Web应用程序或嵌入式应用,SQLite是一个可行的替代方案。
水平有限,欢迎拍砖!!
文本链接:PHP开发人员犯的10个MySQL错误
西蒙兹:原来的标题是10,事实上作者列举了11个,所以我做了一个小的变化。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。