如何使用 sqlsrv_* 函数转义字符串?

问题描述 投票:0回答:3

如何在 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

php sql-server sqlsrv
3个回答
4
投票

SQL Server 代码使准备好的语句变得非常容易:

$query = "SELECT * FROM users WHERE username=? AND password=?";
$parameters = [$_POST["uname"], $_POST["pword"]];
$result = sqlsrv_query($conn, $query, $parameters);

只需将您的值替换为

?
,然后将它们作为数组(按顺序)作为第三个参数传递给
sqlsrv_query()

(并不是说您会将明文密码存储在数据库中,对吧?)


-1
投票

我理解为什么你想用它来捕获无辜的'并清除SQL注入,但是没有这样的函数sqlsrv_real_escape_string。您可以创建自己的函数或使用 preg_replace 并添加

'\'
。只是一个想法。

看看这个问题的答案


-1
投票

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;
             }
© www.soinside.com 2019 - 2024. All rights reserved.