Php 如何将带引号的字符串存储到sql数据库中?

Php 如何将带引号的字符串存储到sql数据库中?,php,mysql,sql,Php,Mysql,Sql,我有一个网站,用户输入一个标题。我希望标题能够使用任何标点符号。我的问题是我有一个疑问: "INSERT INTO table(title, body) VALUES ('$title','$body')"; 其中$title和$body是GET vars。当我为标题加上引号时会发生什么情况?它的行为就像结束字符串并创建无效的sql查询一样。说我有 $title = "I'm entering a title"; "INSERT INTO table(title, body) VALUES (

我有一个网站,用户输入一个标题。我希望标题能够使用任何标点符号。我的问题是我有一个疑问:

"INSERT INTO table(title, body) VALUES ('$title','$body')";
其中$title和$body是GET vars。当我为标题加上引号时会发生什么情况?它的行为就像结束字符串并创建无效的sql查询一样。说我有

$title = "I'm entering a title";
"INSERT INTO table(title, body) VALUES ('$title','$body')";
//"INSERT INTO table(title, body) VALUES ('I'm entering a title','$body')";

它结束了这条线。我尝试过使用所有双引号和转义字符,但什么都没有。有人知道解决方案吗?

您的查询易受
SQL注入的攻击,但使用PHP的可以帮助您解决该问题(还允许您在数据库中插入单引号),请阅读下面的文章


您应该首先通过PHP清理变量,然后通过PDO或MySQLi发送干净的变量

在将数据输入数据库和从数据库中输出时使用这两个函数

/****************************************/
/* Encode special chars                 */
/*                                      */
/****************************************/

function DBin($string) 
{
    return  trim(htmlspecialchars($string,ENT_QUOTES));
}

/****************************************/
/* Decode special chars                 */
/*                                      */
/****************************************/

function DBout($string) 
{
    $string = trim($string);
    return htmlspecialchars_decode($string,ENT_QUOTES);
}

你可以试试这个php函数

mysql_real_escape_string

    $title1       = "I'm entering a title";
    $title        = mysqli_real_escape_string($title1);
    "INSERT INTO table(title, body) VALUES ('$title','$body')";

试试这个,希望它能帮助你…

你需要
mysqli\u real\u escape\u string
你的SQL。

已经有一个内置的方法来解决这种情况。。。看一看方法。。。请参阅下面的代码

$title = "I'm entering a title";
$title = mysql_escape_string( $title );
// $title === I\'m entering a title
"INSERT INTO table(title, body) VALUES ('$title','$body')";
// "INSERT INTO table(title, body) VALUES ('I\'m entering a title','$body')";

也许你可以使用html实体强制链接:那么mysqli和bindparams完全可以防止sql注入吗?对我来说,是的。如果我正在使用mysqli prepare路由,我需要这个吗?php手册说不鼓励使用它,应该使用mysqli!mysqli_real_escape_字符串需要2个参数