仓酷云

标题: PHP教程之PHP中操作MySQL数据库的注重事项 [打印本页]

作者: 只想知道    时间: 2015-2-4 00:28
标题: PHP教程之PHP中操作MySQL数据库的注重事项
通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的东西其实并不多,离当一个真正的程序员,还有很大的差距。mysql|数据|数据库   1. 分号的破例
 关于 MySQL ,第一件你必需切记的是它的每行号令都是用分号 (;) 作为停止的,但……没有完整相对的事,在这儿也是一样,当一行 MySQL 被拔出在 PHP 代码中时,最好把前面的分号省略失落,例如:
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
");
 这是由于 PHP 也是以分号作为一行的停止的,额定的分号有时会让 PHP 的语法剖析器弄不分明,所以仍是省略失落的好。在这类情形下,固然省略了分号,然而 PHP 在履行 MySQL 号令时会主动的帮你加上的。

 别的还有一个不要加分号的情形。当你想把要字段的竖者分列显示上去,而不是像凡是的那样横着分列时,你可以用 \G 来停止一行 SQL 语句,这时候就用不上分号了,例如:

SELECT * FROM PENPALS WHERE USER_ID = 1\G

2. TEXT、DATE、和 SET 数据类型

 MySQL 数据表的字段必需有界说一个数据类型。这有大约 25 种选择,大局部都是直接了然的,就不多费口舌了。但有几个有需要提一下。

 TEXT 不是一种数据类型,固然能够有些书上是这么说的。它实践上应当是“ LONG VARCHAR ”或“ MEDIUMTEXT ”。

 DATE 数据类型的格局是 YYYY-MM-DD ,好比: 1999-12-08 。你可以很轻易的用 date 函数来失掉这类格局确当前体系工夫:

date("Y-m-d")

 而且,在 DATA 数据类型之间可以作减法,失掉相差的工夫天数:

$age = ($current_date - $birthdate);

 纠合 SET 是一个有效的数据类型,它和列举 ENUM 有点类似,只不外是 SET 可以保留多个值而 ENUM 只能保留一个值罢了。并且, SET 类型最多只可以有 64 个预定的值,而 ENUM 类型却可以处置最多 65,535 个预界说的值。而假如需求有大于 64 个值的纠合,该怎样办呢?这时候就需求界说多个纠合来一同处理这个成绩了。

3. 通配符

 SQL 的通配符有两种:“ * ”和“ % ”。分离用在分歧的情形下。例如:假如你想看到数据库的一切内容,可以像如许来查询:

SELECT * FROM dbname WHERE USER_ID LIKE '%';

 这儿,两个通配符都被用上了。他们暗示不异的意思 ?? 都是用来婚配任何的字符串,然而他们用在分歧的高低文中。“ * ”用来婚配字段名,而“ % ”用来婚配字段值。别的一个不轻易引发注重的中央是“ % ”通配符需求和 LIKE 关头字一同利用。

还有一个通配符,就是下划线“ _ ”,它代表的意思和下面分歧,是用来婚配任何单个的字符的。

4. NOT NULL 和空纪录

 假如用户在没有填任何器材的情形下按了 submit 按钮,会如何呢?假如你的确需求一个值,那末可以用客户端剧本或办事器端剧本来停止数据验证,这一点在后面已说过了。然而,在数据库中倒是答应一些字段被空出来甚么也不填。对此类记载, MySQL 将要为之履行一些工作:

拔出值 NULL ,这是缺省的操作。
假如你在字段界说中为之声了然 NOT NULL (在创立或修正这个字段的时分), MySQL 将把这个字段空出来甚么器材也不填。
关于一个 ENUM 列举类型的字段,假如你为之声了然 NOT NULL , MySQL 将把列举集的第一个值拔出到字段中。也就是说, MySQL 把列举集的第一个值作为这个列举类型的缺省值。

 一个值为 NULL 的记载和一个空记载是有一些区分的。 % 通配符可以婚配空记载,然而却不克不及婚配 NULL 记载。在某些时分,这类区分会形成一些意想不到的效果。就我的经历而言,任何字段都应当声明为 NOT NULL 。如许上面的 SELECT 查询语句就可以够正常运转了:

if (!$CITY) {$CITY = "%";}

$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = ' 柳 '
AND LAST_NAME = ' 如风 '
AND CITY LIKE '$CITY'
");

 在第一行中,假如用户没有指定一个 CITY 值,那末就会用通配符 % 来代入 CITY 变量,如许搜刮时就会把任何的 CITY 值都思索出来,乃至包含那些 CITY 字段为空的记载。

 然而假如有一些记载,它的 CITY 字段值是 NULL ,这时候成绩就呈现了。下面的查询是不克不及够找到这些字段的。成绩的一个处理举措可所以如许:

if (!$CITY) {$CITY = "%";}

$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = ' 柳 '
AND LAST_NAME = ' 如风 '
AND (CITY LIKE '$CITY' OR CITY IS NULL)
");

 注重在搜刮 NULL 时,必需用“ IS ”关头字,而 LIKE 时不会正常任务的。

 在最初要提到的是,假如你在到场或修正一个新的字段之前,数据库中已有了一些纪录了,这时候新到场的字段在本来的记载中的值,多是 NULL ,也能够为空。这也算是 MySQL 的一个 Bug 吧,所以在这类情形下,利用 SELECT 查询要出格的当心。
  聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。
作者: 小女巫    时间: 2015-2-4 13:12
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 飘灵儿    时间: 2015-2-7 14:28
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 小妖女    时间: 2015-2-8 14:13
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 海妖    时间: 2015-2-25 15:52
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 冷月葬花魂    时间: 2015-3-1 20:04
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: 简单生活    时间: 2015-3-1 20:30
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 再见西城    时间: 2015-3-10 23:15
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 金色的骷髅    时间: 2015-3-13 02:39
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 兰色精灵    时间: 2015-3-20 10:32
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 谁可相欹    时间: 2015-3-25 07:43
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 第二个灵魂    时间: 2015-3-26 09:49
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 蒙在股里    时间: 2015-3-31 23:35
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 若天明    时间: 2015-4-1 12:09
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 山那边是海    时间: 2015-4-3 05:49
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 只想知道    时间: 2015-4-15 08:22
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 活着的死人    时间: 2015-4-16 16:10
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 柔情似水    时间: 2015-5-1 00:09
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 灵魂腐蚀    时间: 2015-5-1 20:10
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 深爱那片海    时间: 2015-5-2 19:49
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 愤怒的大鸟    时间: 2015-5-8 08:25
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2