我有一个网站,用户输入了一个标题。我希望标题能够使用任何标点符号。我的问题是生病有疑问:
"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')";
它结束了字符串。我试过使用所有双引号和转义字符,但没有。有谁知道解决方案?
答案 0 :(得分:1)
答案 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')";