澳门新葡亰平台游戏网站在PHP中操作MySQL要注意哪些问题

MySQL 中的 SQL 对于 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 = 1G TEXT、DATE、和 SET 数据类型 作 者 : 扬眉 编写翻译本文点击次数:114 MySQL 数据表的字段必得有定义二个数据类型。那有差超级少 25
种选取,大部分都以直接明了的,就非常的少废话了。但有几个有供给提一下。
TEXT 不是一种数据类型,尽管或者某些书上是如此说的。它其实应该是“ LONG
VARCHAEscort ”可能“ MEDIUMTEXT ”。 DATE 数据类型的格式是 YYYY-MM-DD ,比方:
1997-12-08 。你能够相当的轻松的用 date 函数来获取这种格式的脚下系统时间:
date(“Y-m-d”卡塔尔(قطر‎ 并且,在 DATA 数据类型之间能够作减法,获得相差的小运天数:
$age = ($current_date – $birthdate卡塔尔; 会集 SET
是二个管用的数据类型,它和枚举 ENUM 有一点点相符,只然而是 SET
能够保留三个值而 ENUM 只可以保留叁个值而已。何况, SET 类型最八只可以够有 六13个约定的值,而 ENUM 类型却能够管理最多 65,5三10个预订义的值。而假设急需有超越 63个值的集合,该如何做吧?那个时候就须求定义四个汇聚来一齐化解那一个主题材料了。
通配符 SQL 的同配符有三种:“ * ”和“ %
”。分别用在分歧的气象下。比方:假诺您想看看数据库的装有内容,可以像这么来询问:
SELECT * FROM dbname WHERE USER_ID LIKE %;
那儿,八个通配符都被用上了。他们意味着无差距的野趣 ??
都以用来合作任何的字符串,然而她们用在不相同的上下文中。“ *澳门新葡亰平台游戏网站
”用来相称字段名,而“ % ”用来相配字段值。别的多个不便于引起注意的地点是“
% ”通配符需求和 LIKE 关键字一齐利用。 还或然有一个通配符,正是下划线“ _
”,它意味着的意思和地方差别,是用来协作任何单个的字符的。 NOT NULL
和空记录 作 者 : 扬眉 编写翻译 本文点击次数:114
如若顾客在向来不填任何事物的场合下按了 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
O奇骏 CITY IS NULL卡塔尔 “卡塔尔(قطر‎; 注意在探求 NULL 时,必需用“ IS ”关键字,而 LIKE
时不会符合规律办事的。
在最后要提到的是,假设您在参预可能修正三个新的字段以前,数据库中早原来就有了一部分笔录了,这时候新加盟的字段在原来的纪要中的值,恐怕是
NULL ,也恐怕为空。那也总算 MySQL 的三个 Bug 吧,所以在这里种景况下,使用
SELECT 查询要特意的小心。

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 = 1G

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

  TEXT 不是一种数据类型,应该是” LONG VARCHAMurano “或许” MEDIUMTEXT “。

  DATE 数据类型的格式是 YYYY-MM-DD ,比如: 二〇〇二-10-01
。你能够很自由的用 date 函数来获得这种格式的近年来系统时间:

    date(“Y-m-d”)

  而且,在 DATA 数据类型之间能够作减法,取得相差的时刻天数:

    $age = ($current_date – $birthdate);

  集合 SET 是一个卓有成效的数据类型,它和枚举 ENUM 有一些相近,只不过是 SET
能够保留多个值而 ENUM 只好保留八个值而已。何况, SET 类型最七只可以够有 陆十个约定的值,而 ENUM 类型却能够管理最多 65,5三十八个预订义的值。而一旦需求有超乎 六10个值的汇集,该怎么做呢?那时候就需求定义多个聚众来一头化解那一个标题了。

  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 = ‘ Bill ‘
  AND LAST_NAME = ‘ Gates ‘
  AND CITY LIKE ‘$CITY’
  ”);

  在首先行中,如若客商并未有一些名叁个 CITY 值,那么就能够用通配符 % 来代入
CITY 变量,那样搜索时就能够把任何的 CITY 值都思谋进来,以至包蕴那二个 CITY
字段为空的纪录。

  不过一旦有一点点纪录,它的 CITY 字段值是 NULL
,这个时候难题就现身了。上面包车型地铁查询是不可以知道找到那些字段的。难题的多少个解除办法能够是那样:

  if (!$CITY) {$CITY = “%”;}
  $selectresult = mysql_query (“SELECT * FROM dbname
  WHERE FIRST_NAME = ‘ Bill ‘
  AND LAST_NAME = ‘ Gates ‘
  AND (CITY LIKE ‘$CITY’ OR CITY IS NULL)
  ”);

  重视在搜索 NULL 时,必得用” IS “要害字,而 LIKE 时不会健康办事的。

  在结尾要提到的是,若是你在步入或许匡正二个新的字段此前,数据库中一度有了一些记录了,那个时候新出席的字段在本来的纪要中的值,大概是
NULL ,也说倒霉为空,在这里种气象下,使用 SELECT 查询要不名一格的小心。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图