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个参数