在mysqli_query中正确引用

时间:2015-06-29 05:34:24

标签: php mysql

我的查询中存在一些问题。

$test = "Don't look at me";

mysqli_query("INSERT INTO testtable SET testfield = '".$test."' ");

请注意字符串上有一个引号。当我执行它时,它会返回一个错误,如

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便使用“*看看我...”左右使用的正确语法。如果我删除字符串中的单引号,它可以正常工作。那么如何在不删除单引号的情况下将字符串保存到数据库中呢?

4 个答案:

答案 0 :(得分:0)

你需要正确地逃避它们 -

$test = "Don\'t look at me"; 

或使用aadslashes()

"INSERT INTO testtable SET testfield = '" .addslashes($test). "'"

答案 1 :(得分:0)

您可以使用mysqli_real_escape_string()。它可以保护并使用sql injection阻止您的查询。也是table name

中的column namebacktick
$test = "Don't look at me";

$val=mysqli_real_escape_string($con,$test); //here you can pass your connection variable

mysqli_query("INSERT INTO `testtable` SET `testfield` = '".$val."' ");

阅读Documemt mysql_real_escape_string()

答案 2 :(得分:0)

或者您可以使用

mysqli_real_escape_string(connection,escapestring)

mysqli_real_escape_string()函数转义字符串中的特殊字符,以便在SQL语句中使用。

答案 3 :(得分:0)

你不应该试图自己逃避价值观。使用准备好的语句:http://php.net/manual/en/mysqli.prepare.phphttp://php.net/manual/en/mysqli.quickstart.prepared-statements.php