PHP GBK sql编程需注意事项
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
主要的原因是因为0xbf27 在 gbk 编码情况下出现的bug ,其它编码gb2312 utf-8无影响。 简单的解决方法,使用gb2312编码,改动较小。 mysql_query("SET CHARACTER SET 'gb2312'"); 多数项目都在使用addslashes()来自动转义“'”“"”“\” addslashes()对单字节没有问题,对gbk编码存在bug 这个和Sql创建数据库表时没有任何关系。既使 CREATE TABLE `test` ( `id` int( 4 ) NOT NULL AUTO_INCREMENT , `content` varchar( 200 ) NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM DEFAULT CHARSET = gbk 也不受此bug影响 $c=addslashes($_GET['c']); mysql_connect("localhost","root","123456"); mysql_select_db("test"); mysql_query("SET CHARACTER SET 'gbk'"); $content=$c; $sql=" select count(*) num from `test` where `content`='$content'"; $rs = mysql_query($sql); $row=mysql_fetch_array($rs); if(isset($row['num'])){ echo "登陆OK "; } else { echo "登陆失败,用户ID不存在"; } /* bug测试地址 test.php?c=%bf%27 OR 1 = 1 /* */ 该文章在 2012/6/5 23:41:22 编辑过 |
关键字查询
相关文章
正在查询... |