谁可相欹 发表于 2015-2-3 23:37:46

PHP网页编程之PHP法式员最常犯的11个MySQL毛病

会MYSQL吗?会,我会把我的信息在数据库里插入删除啦      关于大多半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注入进击会使用以下的代码:
  $username = $_POST["name"]; $password = $_POST["password"]; $sql = "SELECT userid FROM usertable WHERE username='$username' AND password='$password';"; // run query...
  只需在username字段输出“admin';--”,如许就会被黑到,响应的SQL语句以下:
  SELECT userid FROM usertable WHERE username='admin';
  奸刁的黑客可以以admin登录,他们不需求晓得暗码,由于暗码段被正文失落了。
  4、没有利用UTF-8
  美国、英国和澳大利亚的咱们很少思索除英语以外的其他言语。咱们很满意地完成了本人的“佳构”却发明它们其实不能在其他中央正常运转。
  UTF-8处理了良多国际化成绩。固然在PHP v6.0之前它还不克不及很好地被撑持,但这其实不影响你把MySQL字符集设为UTF-8。
  5、相对SQL,偏心PHP
  假如你接触MySQL不久,那末你会倾向于利用你已把握的言语来处理成绩,如许会招致写出一些冗余、低效力的代码。好比,你不会利用MySQL自带的AVG()函数,却会先对纪录集中的值乞降然后用PHP轮回来盘算均匀值。
  另外,请注重PHP轮回中的SQL查询。凡是来讲,履行一个查询比在了局中迭代更无效率。
  所以,在剖析数据的时分请使用数据库体系的优势,懂一些SQL的常识将大有裨益。
  6、没有优化数据库查询
  99%的PHP功能成绩都是由数据库引发的,仅仅一个糟的SQL查询就可以让你的web使用完全瘫痪。MySQL的EXPLAIN statement、Query Profiler,还有良多其他的东西将会匡助你找出这些万恶的SELECT。
  7、不克不及准确利用数据类型
  MySQL供应了诸如numeric、string和date等的数据类型。假如你想存储一个工夫,那末利用DATE或DATETIME类型。假如这个时分用INTEGER或STRING类型的话,那末将会使得SQL查询十分庞杂,条件是你能利用INTEGER或STRING来界说谁人类型。
  良多人偏向于私自自界说一些数据的格局,好比,利用string来存储序列化的PHP对象。如许的话数据库办理起来能够会变得复杂些,但会使得MySQL成为一个糟的数据存储并且以后极可能会引发毛病。
  8、在查询中利用*
  永久不要利用*来前往一个数据表一切列的数据。这是怠惰:你应当提取你需求的数据。就算你需求一切字段,你的数据表也不成防止的会发生变更。
  9、不利用索引或过度利用索引
  普通性准绳是如许的:select语句中的任何一个where子句暗示的字段都应当利用索引。
  举 个例子,假定咱们有一个user表,包含numeric ID(主键)和email address。登录的时分,MySQL必需以一个email为根据查找准确的ID。假如利用了索引的话(这里指email),那末MySQL就可以够利用 更快的搜刮算法来定位email,乃至可以说是即时完成。不然,MySQL就只能按次地反省每笔记录直到找到准确的email address。
  有的人会在每一个字段上都添加索引,遗憾的是,履行了INSERT或UPDATE以后这些索引都需求从头生成,如许就会影响功能。所以,只在需求的时分添加索引。
  10、健忘备份!
  固然对照稀有,然而数据库仍是有溃散的风险。硬盘有能够破坏,办事器有能够溃散,web主机供应商有能够会破产!丧失MySQL数据将会是灾害性的,所以请确保你已利用了主动备份或已复制到位。
  11、Bonus mistake-不思索利用其他数据库
  关于PHP开辟人员来讲,MySQL多是利用最普遍的数据库体系,但并非独一的选择。PostgreSQL和Firebird是最强无力的竞争者:这个二者都是开源的,并且都没有被公司收买。微软供应了sql server Express,甲骨文供应了10g Express,这二者都是企业级数据库的收费版本。有时分,关于一个较小的web使用或嵌入式使用,SQLite也不掉为一个可行的替换计划。
  转自:http://boobooke.com/bbs/thread-102535-1-1.html
<P style="TEXT-INDENT: 2em">
通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的东西其实并不多,离当一个真正的程序员,还有很大的差距。

分手快乐 发表于 2015-2-4 03:57:55

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

活着的死人 发表于 2015-2-9 15:31:43

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

若相依 发表于 2015-2-22 20:26:34

爱上php,他也会爱上你。

飘飘悠悠 发表于 2015-3-7 02:22:15

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

若天明 发表于 2015-3-14 03:05:17

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

不帅 发表于 2015-3-14 16:36:07

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

愤怒的大鸟 发表于 2015-3-21 12:04:41

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

小女巫 发表于 2015-3-26 12:59:32

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

乐观 发表于 2015-4-5 13:06:23

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

飘灵儿 发表于 2015-4-10 22:59:01

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

精灵巫婆 发表于 2015-4-12 06:47:21

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

变相怪杰 发表于 2015-4-16 20:05:46

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

山那边是海 发表于 2015-4-23 23:50:57

对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。

再现理想 发表于 2015-4-28 07:00:02

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

因胸联盟 发表于 2015-5-3 00:01:36

当然这种网站的会员费就几十块钱。

透明 发表于 2015-6-20 01:19:04

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

admin 发表于 2015-6-23 07:18:11

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

只想知道 发表于 2015-7-9 17:22:11

,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
页: [1]
查看完整版本: PHP网页编程之PHP法式员最常犯的11个MySQL毛病