`
libran
  • 浏览: 193389 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

关于PHP中操作MySQL数据库的一些要注意的问题

阅读更多

关于PHP中操作MySQL数据库的一些要注意的问题

 对于 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 查询要特别的小心。

分享到:
评论

相关推荐

    PHP中基于MYSQLI类操作MYSQL数据库的实现.pdf

    PHP 中基于 MYSQLI 类操作 MYSQL 数据库的实现 ...在实践中,使用 MYSQLI 类操作 MYSQL 数据库可能会遇到一些问题,例如,如何处理查询结果、如何防止 SQL 注入漏洞等。开发者需要注意这些问题,并采取相应的解决方案。

    php操作mysql数据库流程整理

    ### PHP 操作 MySQL 数据库流程详解 #### 一、引言 PHP 作为一种广泛使用的脚本语言,在 Web 开发领域有着不可替代的地位。而 MySQL 作为一款轻量级且功能强大的关系型数据库管理系统,与 PHP 结合使用可以实现...

    新手学习,php7中mysql数据库操作类实例,非常清晰易懂

    在PHP7中,MySQL数据库操作通常使用mysqli或PDO_MySQL扩展进行,但对于新手来说,创建一个封装好的数据库操作类可以简化很多工作。这个实例主要介绍如何构建一个PHP7中的MySQL数据库操作类,以实现连接、查询、插入...

    完整的php操作MySQL数据库类.zip

    在PHP编程中,操作MySQL数据库是一项基础且重要的任务。这个"完整的php操作MySQL数据库类"提供了一种结构化的、封装好的方式来实现这一目标。它将常见的数据库操作,如连接、查询、插入、更新和删除等,封装成了一...

    php+mysql数据库操作类 v1.0

    《PHP+MySQL数据库操作类 v1.0:基础与实践》 在PHP开发中,数据库交互是不可或缺的一部分,尤其在动态网站的构建中,PHP与MySQL的结合使用为数据存储和检索提供了强大支持。本文将深入探讨“php+mysql数据库操作类...

    php连接mysql数据库操作类.zip

    在PHP编程中,连接并操作MySQL数据库是一项基本任务。标题提到的"php连接mysql数据库操作类.zip"是一个压缩包,其中包含了一个PHP类,专门用于处理与MySQL数据库的交互,如查询、更新、删除等常见操作。这个类库可能...

    MySQL数据库查询中的like问题.pdf

    MySQL数据库查询中的like问题 MySQL 数据库查询中的like问题是指在使用like操作符时出现的多余数据的问题。这种问题是由于MySQL数据库的设计特点和中文汉字的双字节字符引起的。 在 MySQL 数据库中,使用like操作...

    php操作mysql数据库操作类

    php操作mysql数据库操作类,包括数据库连接及操作

    PHP备份和还原MySQL数据库代码

    标签“PHP备份 MySQL数据库”暗示了本话题的核心,即使用PHP与MySQL数据库交互。在实际项目中,你可以将备份和恢复功能封装成类或者函数,方便在多个地方复用。此外,还可以添加错误处理、日志记录、邮件通知等功能...

    怎样通过PHP连接MYSQL数据库、创建数据库、创建表-PHP编程教程.docx

    连接到 MYSQL 服务器后,需要选择要操作的数据库。使用 mysql_select_db() 函数可以选择数据库。该函数的语法如下: ```php mysql_select_db("数据库名",conn) or die("找不到数据源"); ``` 其中,"数据库名" 是要...

    超简单实用的PHP操作MYSQL数据库类 与分页思路

    在PHP编程中,操作MySQL数据库是一项基础且重要的任务。这里我们关注的是一个超简单实用的PHP操作MySQL数据库的类,以及如何实现分页功能。这两个知识点对于任何处理大量数据的Web应用来说都是至关重要的。 首先,...

    PHP+MySQL数据库连接

    ### PHP+MySQL数据库连接知识点详解 #### 一、PHP与MySQL简介...通过上述介绍,我们了解到如何使用PHP连接MySQL数据库的基本方法和一些高级技巧。在实际开发中,应根据项目需求选择合适的连接方式,并注意安全性问题。

    PHP中基于MySQLi类操作MySQL数据库的实现.pdf

    PHP 中基于 MySQLi 类操作 MySQL 数据库的实现 在当前网络技术飞速发展的时代,无论是 PC 端还是移动端,基本上所有网站都是动态网站。动态网站具有广泛的应用对象,而 PHP 技术在功能需求和设计领域具有规范性和...

    第22章 PHP操作MySQL数据库PPT

    **第22章 PHP操作MySQL数据库** 在PHP开发中,MySQL数据库是一个常用的数据存储系统,本章主要介绍了如何使用PHP语言来与MySQL进行交互。以下是关键知识点的详细讲解: **22.1 PHP访问MySQL数据库的一般步骤** ...

    连接android和php+mysql数据库

    在 test.php 文件中,可以输入一些简单的 PHP 代码,例如输出“Welcome, I am connecting Android to PHP, MySQL”。 创建 MySQL 数据库和表 在 phpmyadmin 中,可以创建一个新的数据库和表。例如,可以创建一个名...

    php连接mysql数据库操作类

    在PHP编程中,连接并操作MySQL数据库是一项基本且重要的任务。这款PHP MySQL操作类提供了全面的功能,涵盖了数据的查询、更新、删除等操作,适用于初学者进行学习和实践,同时也为有经验的开发者提供了一个可自定义...

    php链接mysql数据库类

    在本PHP类`clsMysql`中,实现了通过面向对象的方式连接并操作MySQL数据库的功能。该类提供了丰富的接口来处理数据库连接、查询、错误处理等常见任务。 #### 类的属性 - `$myDbhost`:数据库服务器地址。 - `$myDb...

    php万能MySQL数据库操作类

    一个php开发的万能MySQL数据库连接类,完全开放的源代码,可以自由修改

Global site tag (gtag.js) - Google Analytics