PHP获取值以后怎么格式化

gz109 2015-03-23 11:17:17
数据库里面有一个表,两个字段

id int (5)

content text

然后 form 的表单是这样的
$content=$_POST['content'];
$sql="insert into dbname (`id`,``) values(null,'$content')":


<form action="" method="post">
<textarea name="content">

</textarea>

</form>


现在的问题是如果我在这个表单里面如果写很多类似符号,比如单引号,双引号,或者!@#$$%这样的东西就会提交失败,我吧sql打印出来插入也会失败,应该是起来冲突了,因为我在插入的值的时候用了单引号, 如果提交的值也有单引号,应该就是不知道

...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbsbjbhpmpiq 2015-03-27
  • 打赏
  • 举报
回复
楼上已经解答完了 这里普及一下: mysql_real_escape_string 主要是为了 数据库防注入、以及语句正确性等需要,将读写语句中的字符进行了转换; 但最终写入到数据库中的内容,依旧是你转义前的;所以当你读出来的时候,依旧是原来转义前的内容; 比如,你要在数据库中插入字符串 aaaa"aaaa 但如果写成insert into table values("aaaa"aaaa"); 语句就出错了,使用mysql_real_escape_string就能转义成 aaaa\"aaaa; 最终语句就变成了 insert into table values("aaaa\"aaaa"); 但你select * from table 最终得到的内容依旧是 aaaa"aaaa
xuzuning 2015-03-23
  • 打赏
  • 举报
回复
$content = mysql_escape_string($_POST['content']);
$sql = "insert into dbname (`id`,`content`) values(null,'$content')":
gz109 2015-03-23
  • 打赏
  • 举报
回复
引用 1 楼 a752075717 的回复:
要插入之前 先用mysql_escape_string()转义
请问是插入之前用这个函数来执行吗,还是在SQL语言里面执行这个,比如下面这两个,那个是对的 1, $content=mysql_escape_string($_POST['content']); 2, $sql="insert into dbname values('mysql_escape_string($content)')"; 我自己试了这两种都不行
小峰峰峡 2015-03-23
  • 打赏
  • 举报
回复
要插入之前 先用mysql_escape_string()转义
傲雪星枫 2015-03-23
  • 打赏
  • 举报
回复
插入前先轉義 只需要轉一次 $content = mysql_escape_string($_POST['content']); $sql = "insert into dbname (`id`,`content`) values(null,'$content')": 參考:http://php.net/manual/zh/function.mysql-escape-string.php

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧