php - 什么时候应该转义 MySQL 中使用的字符串

标签 php mysql mysql-real-escape-string

我对 PHP 还很陌生,但已经熟悉 StackOverflow 一段时间了。

我最近一直在阅读有关使用 mysql_real_escape_string 的适当时机的信息,并且非常感谢有关以下内容的任何建议。

在初始 $_POST 变量上使用一次 mysql_real_escape_string 是否足以通过脚本保护字符串?

例如:

$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string($_POST["password"]);
$email = mysql_real_escape_string($_POST["email"]);
$repeat_password = mysql_real_escape_string($_POST["repeat_password"]);

我在运行一堆 if 语句之前声明这些值,最后,一旦 if 语句完成,我就会向 mysql 数据库中插入一个 INSERT:

mysql_query("INSERT INTO users (username, password, email, signup_date) VALUES ('$username', '$password', '$email', CURDATE())") or die(mysql_error());

mysql_real_escape_string 在整个 if 语句中没有在其他任何地方使用 - 这对于新手来说是否足够安全,同时仍然保持一些注入(inject)保护?

最佳答案

不,这不安全。您应该切换到 prepared statements .

关于php - 什么时候应该转义 MySQL 中使用的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23281738/

相关文章:

php - 使用 GD ( imagettftext() ) 和 UTF-8 字符

mysql - 如何在mysql中插入派生属性

mysql - 如何在查询中使用日期作为条件的同时,自动执行每天的 mysql 查询?

php - mysql_real_escape_string 在数据库连接内返回空/空白

php - PHP 中的转义字符和保留

php - Mysql Php 使用 real_escape_string 转义单引号

php - 如何在 FOR 循环中多次执行准备好的 SQL 语句?

php - 在 codeigniter 库中使用 mysql

php - 您能否发布有关如何将 PHPUnit 与 NetBeans 结合使用的示例?

php - 使用 JQuery ajax.Post() 更新数据库