如何在 sqlsrv 中使用
real_escape_string
?
这是我的代码:
$uname = sqlsrv_real_escape_string($conn, trim($_POST['uname']));
$pass = sqlsrv_real_escape_string($conn, trim($_POST['pword']));
但我收到以下错误:
未定义函数
sqlsrv_real_escape_string
SQL Server 代码使准备好的语句变得非常容易:
$query = "SELECT * FROM users WHERE username=? AND password=?";
$parameters = [$_POST["uname"], $_POST["pword"]];
$result = sqlsrv_query($conn, $query, $parameters);
只需将您的值替换为
?
,然后将它们作为数组(按顺序)作为第三个参数传递给 sqlsrv_query()
。
(并不是说您会将明文密码存储在数据库中,对吧?)
我理解为什么你想用它来捕获无辜的'并清除SQL注入,但是没有这样的函数sqlsrv_real_escape_string。您可以创建自己的函数或使用 preg_replace 并添加
'\'
。只是一个想法。
miken32 的回答绝对是黄金,谢谢:) 我添加了一些错误处理行
if ($conn === false)
{
print_r(sqlsrv_errors(), true);
return false;
}
$stmt = sqlsrv_query($conn, $sql, $values);
if ($stmt === false)
{
print_r(sqlsrv_errors(), true);
return false;
}