仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1148|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP法式员最常犯的11个MySQL毛病

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:37:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
会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,他也会爱上你。
飘飘悠悠 该用户已被删除
5#
发表于 2015-3-7 02:22:15 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
若天明 该用户已被删除
6#
发表于 2015-3-14 03:05:17 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
不帅 该用户已被删除
7#
发表于 2015-3-14 16:36:07 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-21 12:04:41 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
小女巫 该用户已被删除
9#
发表于 2015-3-26 12:59:32 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
乐观 该用户已被删除
10#
发表于 2015-4-5 13:06:23 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
飘灵儿 该用户已被删除
11#
发表于 2015-4-10 22:59:01 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
精灵巫婆 该用户已被删除
12#
发表于 2015-4-12 06:47:21 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
变相怪杰 该用户已被删除
13#
发表于 2015-4-16 20:05:46 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
山那边是海 该用户已被删除
14#
发表于 2015-4-23 23:50:57 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
再现理想 该用户已被删除
15#
发表于 2015-4-28 07:00:02 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
因胸联盟 该用户已被删除
16#
发表于 2015-5-3 00:01:36 | 只看该作者
当然这种网站的会员费就几十块钱。
透明 该用户已被删除
17#
发表于 2015-6-20 01:19:04 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
admin 该用户已被删除
18#
发表于 2015-6-23 07:18:11 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
只想知道 该用户已被删除
19#
发表于 2015-7-9 17:22:11 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-14 05:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表