PHP+MYSQL大小写问题

[PHP]
一、大小写敏感

1. 变量名区分大小写

所有变量均区分大小写,包括普通变量以及$_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION,$GLOBALS,$_SERVER,$_FILES,$_ENV等;

 

<?php

$abc= 'abcd';

echo$abc; //输出 'abcd';

echo$aBc; //无输出

echo$ABC; //无输出

2. 常量名默认区分大小写,通常都写为大写

 

<?php

define("ABC","Hello World");

echoABC;   //输出 Hello World

echoabc;   //输出 abc

3. php.ini配置项指令区分大小写

file_uploads = 1 不能写成 File_uploads = 1

二、大小写不敏感

1. 函数名、方法名、类名不区分大小写,但推荐使用与定义时相同的名字

 

functionshow(){

echo"Hello World";

}

show(); //输出 Hello World    推荐写法

SHOW(); //输出 Hello World

 

 

 

 

 

 

classcls{

staticfunctionfunc(){

echo"hello world";

}

}

 

Cls::FunC();  //输出hello world

2. 魔术常量不区分大小写,推荐大写

包括:__LINE____FILE____DIR____FUNCTION____CLASS____METHOD____NAMESPACE__

 

echo__line__;  //输出 2

echo__LINE__;  //输出 3

3. NULLTRUEFALSE不区分大小写

 

$a= null;

$b= NULL;

 

$c= true;

$d= TRUE;

 

$e= false;

$f= FALSE;

 

var_dump($a== $b); //输出 boolean true

var_dump($c== $d); //输出 boolean true

var_dump($e== $f); //输出 boolean true

4.类型强制转换,不区分大小写

包括

§  (int)(integer) – 转换成整型

§  (bool)(boolean) – 转换成布尔型

§  (float)(double)(real) – 转换成浮点型

§  (string) – 转换成字符串

§  (array) – 转换成数组

§  (object) – 转换成对象

 

$a=1;

var_dump($a);  //输出 int 1

 

$b=(STRING)$a;

var_dump($b);  //输出string ';1'; (length=1)

 

$c=(string)$a;

var_dump($c);  //输出string ';1'; (length=1)


[MYSQL]


一、.MySQL大小写敏感规则

 

原理:MySQL中,一个库会对应一个文件夹,库里的表会则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写敏感(MySQL有一个只读的系统变量lower_case_file_system,其值反映的正是当前文件系统是否区分大小写)
规则:在Windows下Mysql的数据库和表名是大小写不敏感的,而在大多数类型的Unix系统中是大小写敏感的。


以下是MySQL详细的大小写区分规则:

在Linux下:

1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的; 

在Windows下:

1、全部不区分大小写


2、补充

    1> MySQL中有一个系统变量:lower_case_table_names,专门用来配置是否区分据库名与表名的大小写。 如果你的系统是Windows,而你又希望mysql能够区分大小写,那么你可以在my.ini文件中,在[mysqld]一节的最后,加入如下部分:

[plain]   view plain copy
  1. #If set to 0, table names are stored as specified and comparisons are case sensitive.   
  2. #If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.   
  3. #If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases.  
  4. lower_case_table_names=0  

 

 

    2> MySQL在查询字符串时是大小写不敏感的。如某字段值需要区分大小写,可在定义该字段时指定BINARY属性。

 

二、一种MySQL命名规范

为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库、表、列的时候全部采用小写字母加下划线的方式,不使用任何大写字母。

三、关于Hibernate/JPA数据库schema自动映射的问题

使用Hibernate/JPA的工程可以自动生成数据库的schema,由于java有着自己的类与字段命名规则,这与mysql推荐的命名规则不太相符,于是出现了follow哪一种命名规范的问题。一般来说这会由团队和DBA协商确定,使用mysql的命名规范不会出现大小写带来的问题,对于DBA来说可能也更加友好,而使用java的命名规范则对开发人员来说无疑是更加友好的,这将省去列名的映射配置,同时也方便开发人员查看数据库。如果你的项目使用了后者,你最好像上面讲到的,设置一下lower_case_table_names=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值