【开源】写PHP时遇到的各种问题

首先,小小解释下标题上的开源两字,是为了能够让此文章同步到上海大学开源社区的tui-te上面

3. MySQL 字段大小写敏感问题

做数据库大作业时,有经历输入小写密码与大写密码都可以登录的问题(未经MD5加密)。于是就开始鼓捣。
最后使用了比较简便的方法:


如图:

字符集校对
字符集校对

 

utf-8 bin
utf-8 bin

 

 

 

 

 

将原来的字符集校对 utf-8 general -ci 改为 utf-8 bin ,这样就可以实现大小写敏感了
因为:原先general-ci 中的ci 的含义就是 Case Insensitive !

2. PHP页面显示 2012-4-29

PHP页面上面如果有中文…如果只在html的meta部分设置了charset=”utf-8″ ,也一样会产生乱码;这个时候虽然只需要改一下浏览器的encode设置为 Unicode(uft-8),但还是比较麻烦……
然后呢,今天谷歌了下,找到了以下这篇文章
http://www.jb51.net/article/22501.htm
    于是就在PHP文件加了一行这样的代码

header(“Content-type: text/html; charset=utf-8”);

 

这样,就可以不需要手动设置浏览器的encode了~

后话:上面那个链接里的文章,提到了apache 配置文件 httpd.conf 里面的AddDefaultCharset,不过我在我机器上面(Apache 2.2 )上没有找到,是我脸黑?还是我没找到=.=? 就不清楚在PHP写header还是在Apache配置哪个性能更优以及可扩展性更好了~ 求指点~~~

1. PHP插入中文字符串至数据库   2012-4-29

今天在做数据库大作业写一条最最基本的MySQL插入语句时,不论怎么调试,都插入不能,后来在与丁老板的不断讨论中,终于还是发现了问题所在:
先贴代码:

$course1 = “数据库原理”;
$courseAdd = “INSERT INTO `course`(`cname`) VALUES(‘{$course1}’)”;

这个语句在语法上是没有问题的,表中只有2个字段,一个是自增的id,另一个就是varchar(255)的cname (如果有问题欢迎指出……)
但无论如何,都无法插入 “数据库原理” 到数据库中。
后来我无意中改了下浏览器的编码为 UTF-8  ,又把 .php 文件在notepad++中的编码格式由 ANSI 改为了 UTF-8  无BOM 格式。
接着,就可以正常插入了…
后话:
①  之后我又测试下在ANSI编码下能否插入英文字符,测试结果可行。
②  当初我做J2EE的时候也遇到过类似的问题,解决方案也同样是将:数据库连接编码,数据库存储编码,页面编码,JSP/HTML/PHP文件保存编码 设置为配套的编码格式。

小结下: 如果要插入中文字符串,就要把 .php文件修改为和数据库编码相匹配的编码(.php【utf-8 无BOM】对 数据库【utf-8】 ;.php【ANSI】对应 数据库【GBK】)

欢迎各位大神指出文章中的错误~~ THX~~

Dalston

Leave a Reply

Your email address will not be published. Required fields are marked *

4 × three =