在SQL查询中使用变量的正确格式是什么?是的,我知道我的代码是不安全的,因为它没有散列和其他缺陷,但我不能让它工作。如何在PHP中安全地正确使用SQL查询中的变量?
include 'config/database.php'; // DB connection.
$password = mysql_real_escape_string($_POST['password']);
$sql = 'INSERT INTO `login` (`id`, `username`, `password`, `question`) VALUES (NULL, \'test\', \$password\, \'test\')';
if (mysqli_query($con, $sql))
{
echo 'Done!';
}
else
{
echo 'No.';
}
mysqli_close($con);
错误
Connection worked!
Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\hashing\password.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\hashing\password.php on line 3
它只是一个简单的PHP形式的帖子下面的PHP脚本。我还得到了phpMyAdmin中格式化的SQL查询。谢谢!
PHP安装可能只是没有附带'mysql *'扩展名,因为它已被弃用。你可能已经安装了'mysqli *'。 'mysql_real_escape_string()'=>'mysqli_real_escape_string()'。虽然这不会有助于安全问题。 – HPierce
不_尝试手动转义值。相反,请阅读使用“准备好的语句”和“参数绑定”结合使用的优点。 _这全部记录在案。阅读文档!_ – arkascha
如果您使用的是PHP 7,那么'mysql_ *'函数将不再可用。我假设你的'database.php'使用'mysqli_ *'函数,对吧? – MonkeyZeus