最开始向数据库中插入博客信息的代码:
$sql="INSERT INTO blogs (title,content,type,time,id) VALUES ('$_POST[title]','$_POST[content]','$[type]','$_POST[time]','$_POST[id]')";
即直接将前端通过post传来的参数存入数据库中。后来测试发现一个问题就是当content也就是博客内容中含单引号时,无法实现博客的上传。应该是单引号会将sql语句重新分割,导致sql语句错误,就无法正常上传博客了。使用php的 htmlspecialchars 方法,将特殊字符转换为 HTML 实体。
使用ENT_QUOTES参数就可以实现将博客中的单引号转化为 ';,就能够正常将博客存入数据库了。
$content = htmlspecialchars($_POST['contetn'],ENT_QUOTES); $sql="INSERT INTO blogs (title,content,type,time,id) VALUES ('$_POST[title]','$_POST[content]','$content','$_POST[time]','$_POST[id]')"; $con->query( $sql );
当我们需要获取博客时,取出的博客内容时被转化过的格式,例如单引号就是 ' ,<就是<……
要想在前端页面正常显示博客内容,就必须将特殊符号转换回来,这里就要使用与 htmlspecialchars 相对的函数 htmlspecialchars_decode函数了。
并且要将参数设置为ENT_QUOTES,因为需要将单引号从'转换回来,而默认是不会转换单引号的。
部分代码如下:
$arr = array(); // 将每行的博客的内容均转码 while ( $row = $result->fetch_assoc() ) { $row['content'] = htmlspecialchars_decode($row['content'],ENT_QUOTES); array_push( $arr, $row ); }