关于录入单引号问题,这次非解决这个问题不可,50分送上 单引号这个问题昨天还有人讨论,搜索一下吧。HTML特殊符号的问题,写入数据库的时候可以不管,读取/显示的时候htmlspecialchars()一下就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在php.ini配置文件中有一项magic_quotes_gpc=On如果该项为On,那它会自动把POST和GET提交的数据自动把'变成\' 接收外部数据时if(get_magic_quotes_gpc()) { $_POST = array_map('stripslashes', $_POST);}这样就不需考虑magic_quotes_gpc开关的状态,而始终得到未经转义的传 第一:我在PHPMYADMIN里面的SQL框里面输入insert into 来插入单引号时会出现致命错误,导致MYSQL数据库服务被停止;第二:我在PHP代码里面通过mysql_query来执行那段insert into的代码时候没有出现任何错误,单引号可以插入,查看数据库里面的相关内容变成了两个单引号。请结合以上现象再重新分析一下好吗? 一般服务器都会把配置开关打开....楼主如果不放心,可以每个都加上htmlspecialchars() 第一:我在PHPMYADMIN里面的SQL框里面输入insert into 来插入单引号时会出现致命错误,导致MYSQL数据库服务被停止;不会出现这样的现象,除非你的phpmyadmin已经损坏了。phpmyadmin不依赖环境运行第二:我在PHP代码里面通过mysql_query来执行那段insert into的代码时候没有出现任何错误,单引号可以插入,查看数据库里面的相关内容变成了两个单引号。如果你的magic_quotes_runtime=on就会出现这种情况 function add_specialcharacters($query) { return str_replace("'","''",$query); } function split_specialcharacters($query) { return str_replace("''","'",$query); } 问题基本解决,即插入单引号不用做过滤,但是唠叨大哥,我说的第一种情况确实是真的啊,不信你自己试试,直接在phpmyadmin里面写插入记录的SQL语句,插入单引号的时候用 ' ' ',你就会发现MYSQL服务会被关闭掉,得重新启动才能工作。SQL示例:insert into table(a,b) values('h','''); insert into table(a,b) values('h','\'');这是常识insert into table(a,b) values('h',''');将报语法错!但不会导致mysql崩溃 尽量减少$_GET传递参数,尽量用$_POST TO xuzuning(唠叨):今天又测试了一遍,先建了一test表,然后建了一test字段,然后在PHPMYADMIN里面的写SQL的地方写入以下SQL语句:INSERT INTO `test` (`test`) VALUES ('521'');结果MYSQL是没死掉,但是APACH死掉了,查看进程时发现APACH的CPU占有一直在100%左右。但是这段语句写在我的PHP脚本里面时候使用MYSQL_QUERY函数又能正常的执行,这是怎么回事呢? 呵呵,发现更离奇的事情,我直接点PHPMYADMIN里面的插入,然后输入了5个单引号,然后执行,可以正常插入,我看他自动生成的SQL语句里面竟然有12个单引号??按3个算一个单引号的话那么数据库里面的结果应该是插入了4个单引号,但是我查看时发现是5个单引号,这又是怎么回事? 我找到答案了原因如下:' '' '' '' '' '' '这样插入是5个单引号真实情况是两本撇开,中间两个算一个,这就是MYSQL插入单引号的奥秘! dede配置环境出错,请朋友指点 php 的 gd2 扩展 怎么打开? php抓取网页,请教。 如何加密解密php源代码 imagejpeg生成的图片本地可运行但是上传到CEE却运行不了 请教数组合并问题 如何去得图片的分辨率 請推薦學習PHP的入門教材 文件上传问题 新手请教:正则表达式反向引用的疑问 求救,高校人才招聘信息管理系统谁能帮我出点意见? 求学习PHP的资料,散20分
magic_quotes_gpc=On
如果该项为On,那它会自动把POST和GET提交的数据自动把'变成\'
if(get_magic_quotes_gpc()) {
$_POST = array_map('stripslashes', $_POST);
}
这样就不需考虑magic_quotes_gpc开关的状态,而始终得到未经转义的传
不会出现这样的现象,除非你的phpmyadmin已经损坏了。phpmyadmin不依赖环境运行第二:我在PHP代码里面通过mysql_query来执行那段insert into的代码时候没有出现任何错误,单引号可以插入,查看数据库里面的相关内容变成了两个单引号。
如果你的magic_quotes_runtime=on就会出现这种情况
{
return str_replace("'","''",$query);
} function split_specialcharacters($query)
{
return str_replace("''","'",$query);
}
SQL示例:
insert into table(a,b) values('h',''');
这是常识
insert into table(a,b) values('h',''');
将报语法错!
但不会导致mysql崩溃
今天又测试了一遍,先建了一test表,然后建了一test字段,然后在PHPMYADMIN里面的写SQL的地方写入以下SQL语句:
INSERT INTO `test` (`test`) VALUES ('521'');
结果MYSQL是没死掉,但是APACH死掉了,查看进程时发现APACH的CPU占有一直在100%左右。
但是这段语句写在我的PHP脚本里面时候使用MYSQL_QUERY函数又能正常的执行,这是怎么回事呢?
原因如下:' '' '' '' '' '' '
这样插入是5个单引号
真实情况是两本撇开,中间两个算一个,这就是MYSQL插入单引号的奥秘!