通过php将带有撇号的字符串插入数据库

时间:2016-03-27 03:27:11

标签: php mysql

我想以安全模式将数据发布到数据库中。 例如,如果我想将此标题添加到数据库:

$title = " here is title 'here is title' here is title ";

注意它有撇号。

我使用此函数使字符串安全:

function stringsafe($string)
{
    $string = strip_tags(trim(addslashes($string)));
    return $string;
}

正如您所看到的那样,它会在撇号之前添加斜线以使其安全。

当我通过stripslashes显示数据时,我尝试删除斜杠,它正在运行,但它有一些问题。无论如何将数据发布到数据库中?

1 个答案:

答案 0 :(得分:2)

另一方面,事实上一般的经验法则是,你根本不应该改变用户输入。您应该将任何用户输入原样存储到数据库中,以便您可以保留用户输入尽可能原始,并且只在需要显示或使用它时将其转义。

在你的情况下,是的,你是对的,你必须防止它被注入,但你通过在原始输入中添加斜杠来改变原始输入,这不是很受欢迎。如果我的标题包含类似<My 21st Birthday Party!>的字符串并将其剥离,该怎么办?

尝试使用Prepared Statements,这样您就可以将任何数据插入数据库,而无需担心注入。只有当您需要在HTML页面或控制台上显示数据时,才会相应地转义它们,例如htmlentities