从textarea将数据保存到数据库

时间:2013-12-07 07:02:08

标签: php html mysql textarea

我是PHP的新手。我只是想知道为什么每次我从textarea保存字符串数据时,它总是在数据库中插入<p> string </p>格式。这是我的代码:

 <table>
  <tr>
   <td>  
    <textarea name="event_desc" cols="40" rows="10" id="event_desc"></textarea>
    </td>
  </tr>
  <tr>
    <td>&nbsp;</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 &#39; &nbsp;&nbsp; $</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'>";
  }
 }
 ?>

谢谢你们的帮助。

4 个答案:

答案 0 :(得分:2)

我的建议是将 mysqli :: real_escape_string prepared statements一起使用 点击mysqli::real_escape_string

答案 1 :(得分:1)

您可以在存储到数据库时使用addslashes(),如果编码为htmlspecialchars_decode则使用它来进行检索

 <?php
$str = "<p>this -&gt; &quot;</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 -> &quot;</p>

参考:http://www.php.net/manual/en/function.htmlspecialchars-decode.php

答案 2 :(得分:0)

除了上面提到的传统方法。

我们可以使用“base64_encode”对来自文本区域的字符串进行编码,然后存储在db ...中从db检索时使用“base64_decode”函数将其解码回来。

注意: - 按照文档,它会占用33%的空间。

参考: - http://php.net/manual/en/function.base64-encode.php

答案 3 :(得分:-2)

将html编码的文本保存到数据库中。在页面中查看时对标点符号进行编码。所以你必须解释它们的方法。我不是PHP人员,但我知道这是你的问题。