Php:我需要插入一个&在我的mysql数据库中

时间:2012-03-28 17:37:39

标签: php

我遇到&符号问题,因为我要允许用户在数据库中插入page_title。 问题是,在我的母语中,许多公司的名字中都有符号,例如“Santos& Filhos”。

问题是,如何在不破坏数据库且不打开安全问题的情况下插入此内容?

使用此数据库将被破坏

$title = preg_replace('/&/', '&', $title);
$final_title = utf8_encode($title);

我正在使用utf8_encode,因为其他口音如á或ã

谢谢,希望你能在这里帮助我


修改

好的,首先感谢大家,大多数人都是怀疑,mysql_real_escape_string确实是最好的选择之一,如果不是最好的话。

我发现在发布我的变量以便由php处理并插入数据库之前,我错过了一个转义(在查询中)。

所以我设法让我的&但现在我无法设置口音...

到目前为止,我的php代码看起来像这样

$title = mysql_real_escape_string($_POST['title']);
$sql = "UPDATE bodytable SET body_title = '".utf8_encode($title)."'";

然后在我的正面我

utf8_decode($row['body_title']);

结果是

<title>Santos & Filhos - Repara?es de autom?veis</title>

3 个答案:

答案 0 :(得分:2)

使用mysql_real_escape_string()或PDO之类的内容转义进入数据库的字符,并在显示时使用htmlentities()

这包括保护用户输入:What's the best method for sanitizing user input with PHP?

答案 1 :(得分:0)

尝试在要插入数据库的所有特殊字符前面使用转义字符。编码是可以的,但是,例如,如果要将以下字符串添加到mysql字符串字段,您将收到错误。

“特殊字符不起作用”

你可以这样做以防止这些错误

“特殊字符不起作用”

我相信有一个名为addslashes(字符串x)和stripslashes(字符串x)的方法可以帮助你。

答案 2 :(得分:0)

$ title_to_insert_in_database = $ str = addslashes($ title);

$ title_for_page = htmlspecialchars($ title_from_database);