专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
PHP
当前位置:首页 > 技术文档 > PHP >  > 
PHP GBK sql编程需注意事项

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 /*


*/