mysqli_real_escape_string 应该使用什么样的引号?

What kinds of quotes to use with mysqli_real_escape_string?

我在程序 mysqli 中创建了以下脚本,因为我刚从旧的 mysql 开始。我不确定查询周围的引号种类以防止注入。一些用户 post 示例与 ' 其他用户与 ",所以现在我很困惑。我可以使用以下代码进行注入或攻击吗?正确的引号类型是什么?

$username = mysqli_real_escape_string($database,$_POST['form_user']);
$password = mysqli_real_escape_string($database,$_POST['form_password']);

$members = "SELECT * FROM `accounts` WHERE `member` = '$username'";
$result = mysqli_query($database,$members);

我只是一个初学者,所以目前面向对象或 PDO 或准备好的语句对我来说很困难所以我只需要改进这个脚本并使其更安全但是查询变量周围有这么多示例和符号我很困惑关于什么是安全的,什么是不安全的。

mysqli_real_escape_string 遵循底层 C mysql 库的 mysql_real_escape_string function(或等价物),它对字符进行编码:

\, ', ", NUL (ASCII 0), \n, \r, and Control+Z

因此,'" 都被转义了。这意味着您可以在查询中使用任何一种来分隔字符串,MySQL allows both double and single quoted strings 同样。

我知道你知道这一点,但你真的应该现在就上 prepared-statement bandwagon 而不是逃跑。