我是PHP的新手。我只是想知道为什么每次我从textarea保存字符串数据时,它总是在数据库中插入<p> string </p>
格式。这是我的代码:
<table>
<tr>
<td>
<textarea name="event_desc" cols="40" rows="10" id="event_desc"></textarea>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Add" id="Add" value="Add event" /></td>
</tr>
</table>
每次我添加一个引号(')
时,它总是显示为" & #39;"
,没有空格。这是示例输出:
input: test2 ' (and every space i made count)
<p> test2 ' $</p>
我已经使用了mysql_real_escape_string,addslashes和stripslashes。
这是我保存到数据库中的代码:
<?php
if(isset($_REQUEST['Add']))
{
$event_title=$_POST['event_title']; $event_desc=mysql_real_escape_string($_POST['event_desc']);
$section=$_POST['section'];
$get_date=NOW;
if($event_title=="" || $event_desc=="")
{
echo'<div class="warning">Some of the fields are empty.</div>';
}
else
{
mysql_query("INSERT INTO events (`event_title`, `event_desc`,`event_date`,`event_target`) VALUE('$event_title','$event_desc','$get_date','$section')") or die(mysql_error('Error: Error in adding entries'));
echo'<div class="success">You have just added 1 event for School. You will be redirect in 5 seconds</div>';
echo "<META HTTP-EQUIV='Refresh' CONTENT='5; URL=events.php'>";
}
}
?>
谢谢你们的帮助。
答案 0 :(得分:2)
我的建议是将 mysqli :: real_escape_string 与prepared statements一起使用 点击mysqli::real_escape_string
答案 1 :(得分:1)
您可以在存储到数据库时使用addslashes()
,如果编码为htmlspecialchars_decode
则使用它来进行检索
<?php
$str = "<p>this -> "</p>\n";
echo htmlspecialchars_decode($str);
// note that here the quotes aren't converted
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>
输出:
<p>this -> "</p>
<p>this -> "</p>
参考:http://www.php.net/manual/en/function.htmlspecialchars-decode.php
答案 2 :(得分:0)
除了上面提到的传统方法。
我们可以使用“base64_encode”对来自文本区域的字符串进行编码,然后存储在db ...中从db检索时使用“base64_decode”函数将其解码回来。
注意: - 按照文档,它会占用33%的空间。
答案 3 :(得分:-2)
将html编码的文本保存到数据库中。在页面中查看时对标点符号进行编码。所以你必须解释它们的方法。我不是PHP人员,但我知道这是你的问题。