如何将带引号的字符串存储到sql db中?

时间:2012-11-26 05:49:31

标签: 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 ('$title','$body')";
//"INSERT INTO table(title, body) VALUES ('I'm entering a title','$body')";

它结束了字符串。我试过使用所有双引号和转义字符,但没有。有谁知道解决方案?

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

将数据输入数据库并从数据库输出时使用这两个功能。

/****************************************/
/* 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);
}

答案 2 :(得分:0)

您应首先通过PHP清理变量,然后通过PDO或MySQLi将其清理干净......

答案 3 :(得分:0)

你可以试试这个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')";

试试这个,希望这会帮助你......

答案 4 :(得分:0)

您需要mysqli_real_escape_string您的SQL。

答案 5 :(得分:0)

已经有针对这种情况的内置方法...看看mysql_escape_string方法...请参阅下面的代码......

$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')";