从textarea提交 - mysql错误

时间:2010-09-30 23:21:42

标签: php mysql

我在我的新网站上使用TinyMCE英语,我自己做(我就像一个星期天的程序员:))。和以前一样,我用我的母语做网站时,我没有遇到这个问题:

所以...当我在textarea中写一个单词“do not”或“not not”时,“'”打破了MySQL查询,我得到一个关于MySQL语法的错误。有没有办法绕过这个并允许“'”保存在数据库中?

编辑页面的代码如下所示

<textarea rows="12" cols="50" height="200px" name="text" >
   <?php echo $row['text'];?>
</textarea>

并查询

$sql="UPDATE works SET client='".$_POST["client"]."', description='".$_POST["description"]."', text='".$_POST["text"]."', image='".$_FILES["attels"]["name"]."' WHERE id=".$_GET['id']."";

另外,有没有办法从the textarea中删除<p>标签,因为tinymce会自动在每个段落前设置这些

。但我不需要它们。

2 个答案:

答案 0 :(得分:1)

你需要使用

 mysql_escape_string

清理POST变量以在MySQL查询中使用

答案 1 :(得分:1)

您可以使用mysql_real_escape_string()功能清理要插入数据库的文本。这会在可能导致问题的字符前面添加反斜杠,例如单引号。

$sql="UPDATE works SET client='".mysql_real_escape_string($_POST["client"])."', description='".mysql_real_escape_string($_POST["description"])."', text='".mysql_real_escape_string($_POST["text"])."', image='".mysql_real_escape_string($_FILES["attels"]["name"])."' WHERE id=".sprintf("%d", $_GET['id'])."";

理想情况下,您还应该使用sprintf()来防止SQL注入。