Php mysqli_real_escape_string()和mysql_real_escape_string()之间的区别
我读过无数篇文章,但我想知道是否有人能用外行的语言向我解释这一区别?我知道它们都是为了防止sql注入,也是为了安全。但是如果我使用mysqli来运行查询,或者使用老式的sql查询方式,那么我使用哪种方式真的很重要吗?它们不是sql函数的包装器吗 为什么下面的代码不起作用Php mysqli_real_escape_string()和mysql_real_escape_string()之间的区别,php,sql,mysqli,Php,Sql,Mysqli,我读过无数篇文章,但我想知道是否有人能用外行的语言向我解释这一区别?我知道它们都是为了防止sql注入,也是为了安全。但是如果我使用mysqli来运行查询,或者使用老式的sql查询方式,那么我使用哪种方式真的很重要吗?它们不是sql函数的包装器吗 为什么下面的代码不起作用 $test="hello, 'there"; $db->real_escape_string($test); $db->query("INSERT INTO users (first_name) VALUES (
$test="hello, 'there";
$db->real_escape_string($test);
$db->query("INSERT INTO users (first_name) VALUES ('$test')");
它们考虑了连接的当前字符集,因此它们需要能够访问连接,因此您必须使用用于打开连接的库的字符集 不过,一般来说,应该避免使用这些方法,而应该选择使用 为什么下面的代码不起作用
$test="hello, 'there";
$db->real_escape_string($test);
$db->query("INSERT INTO users (first_name) VALUES ('$test')");
您可能有其他问题,但:
$test = mysqli_real_escape_string($link, $test);
除了昆汀所说的以外: 两种类型的输出相同 mysql\u real\u escape\u字符串 $link是mysqli\u real\u escape\u字符串必须的 mysql\u real\u escape\u字符串 $link是可选的
如果未指定链接标识符,则使用mysql_connect()打开的最后一个链接。如果没有,则尝试打开一个没有参数的扩展。一个使用MySQL_*扩展,另一个使用MySQLi_*扩展。。。。但是如果您使用的是MySQLi,那么您应该使用带有绑定变量的prepared语句。因此,在查询执行之后,您添加了MySQLi_real_escape_字符串,并且它需要con作为参数!我在使用mysqli,但你能链接到任何地方阅读准备好的声明吗?这里没有真正的问题。一些本可以很容易研究的东西。投票关闭。这不应该是
$test=mysqli\u real\u escape\u字符串($con,$test)代码>还是你发布的内容仍然有效mysqli\u real\u escape\u string()
需要数据库连接;据我所知。@Fred ii--哦,你说得对。我通常只通过DBIx::Class来处理数据库,所以我没有mysqli语法。。。听起来很有趣。我将对此进行研究。这些函数的区别没有解释