关于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 数据库的实现 ...在实践中,使用 MYSQLI 类操作 MYSQL 数据库可能会遇到一些问题,例如,如何处理查询结果、如何防止 SQL 注入漏洞等。开发者需要注意这些问题,并采取相应的解决方案。
### PHP 操作 MySQL 数据库流程详解 #### 一、引言 PHP 作为一种广泛使用的脚本语言,在 Web 开发领域有着不可替代的地位。而 MySQL 作为一款轻量级且功能强大的关系型数据库管理系统,与 PHP 结合使用可以实现...
在PHP7中,MySQL数据库操作通常使用mysqli或PDO_MySQL扩展进行,但对于新手来说,创建一个封装好的数据库操作类可以简化很多工作。这个实例主要介绍如何构建一个PHP7中的MySQL数据库操作类,以实现连接、查询、插入...
在PHP编程中,操作MySQL数据库是一项基础且重要的任务。这个"完整的php操作MySQL数据库类"提供了一种结构化的、封装好的方式来实现这一目标。它将常见的数据库操作,如连接、查询、插入、更新和删除等,封装成了一...
《PHP+MySQL数据库操作类 v1.0:基础与实践》 在PHP开发中,数据库交互是不可或缺的一部分,尤其在动态网站的构建中,PHP与MySQL的结合使用为数据存储和检索提供了强大支持。本文将深入探讨“php+mysql数据库操作类...
在PHP编程中,连接并操作MySQL数据库是一项基本任务。标题提到的"php连接mysql数据库操作类.zip"是一个压缩包,其中包含了一个PHP类,专门用于处理与MySQL数据库的交互,如查询、更新、删除等常见操作。这个类库可能...
MySQL数据库查询中的like问题 MySQL 数据库查询中的like问题是指在使用like操作符时出现的多余数据的问题。这种问题是由于MySQL数据库的设计特点和中文汉字的双字节字符引起的。 在 MySQL 数据库中,使用like操作...
php操作mysql数据库操作类,包括数据库连接及操作
标签“PHP备份 MySQL数据库”暗示了本话题的核心,即使用PHP与MySQL数据库交互。在实际项目中,你可以将备份和恢复功能封装成类或者函数,方便在多个地方复用。此外,还可以添加错误处理、日志记录、邮件通知等功能...
连接到 MYSQL 服务器后,需要选择要操作的数据库。使用 mysql_select_db() 函数可以选择数据库。该函数的语法如下: ```php mysql_select_db("数据库名",conn) or die("找不到数据源"); ``` 其中,"数据库名" 是要...
在PHP编程中,操作MySQL数据库是一项基础且重要的任务。这里我们关注的是一个超简单实用的PHP操作MySQL数据库的类,以及如何实现分页功能。这两个知识点对于任何处理大量数据的Web应用来说都是至关重要的。 首先,...
### PHP+MySQL数据库连接知识点详解 #### 一、PHP与MySQL简介...通过上述介绍,我们了解到如何使用PHP连接MySQL数据库的基本方法和一些高级技巧。在实际开发中,应根据项目需求选择合适的连接方式,并注意安全性问题。
PHP 中基于 MySQLi 类操作 MySQL 数据库的实现 在当前网络技术飞速发展的时代,无论是 PC 端还是移动端,基本上所有网站都是动态网站。动态网站具有广泛的应用对象,而 PHP 技术在功能需求和设计领域具有规范性和...
**第22章 PHP操作MySQL数据库** 在PHP开发中,MySQL数据库是一个常用的数据存储系统,本章主要介绍了如何使用PHP语言来与MySQL进行交互。以下是关键知识点的详细讲解: **22.1 PHP访问MySQL数据库的一般步骤** ...
在 test.php 文件中,可以输入一些简单的 PHP 代码,例如输出“Welcome, I am connecting Android to PHP, MySQL”。 创建 MySQL 数据库和表 在 phpmyadmin 中,可以创建一个新的数据库和表。例如,可以创建一个名...
在PHP编程中,连接并操作MySQL数据库是一项基本且重要的任务。这款PHP MySQL操作类提供了全面的功能,涵盖了数据的查询、更新、删除等操作,适用于初学者进行学习和实践,同时也为有经验的开发者提供了一个可自定义...
在本PHP类`clsMysql`中,实现了通过面向对象的方式连接并操作MySQL数据库的功能。该类提供了丰富的接口来处理数据库连接、查询、错误处理等常见任务。 #### 类的属性 - `$myDbhost`:数据库服务器地址。 - `$myDb...
一个php开发的万能MySQL数据库连接类,完全开放的源代码,可以自由修改