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


Insert strings with apostrophes into database by php

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

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

注意它有撇号。

我使用这个函数来确保字符串的安全:

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

正如你所看到的,它在撇号之前添加斜杠以确保安全。

当我用stripslashes显示数据时,我试图删除斜杠,它可以工作,但它有一些问题。是否可以将数据发布到数据库中?

顺便说一句,事实上,一般的经验法则是,根本不应该更改用户输入。您应该将任何用户输入原样存储到数据库中,这样您就可以尽可能地保留用户输入的原始信息,并且只有在需要显示或使用时才对其进行转义

在你的情况下,是的,你是对的,你必须防止它被注入,但你通过在原始输入中添加斜杠来改变原始输入,这不是很好。如果我的标题包含一个像<My 21st Birthday Party!>这样的字符串,而你把它去掉了怎么办?

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