使用 SQL SERVER 准备好的语句

Prepared statements with SQL SERVER

我正在为我的数据库使用 Microsoft SQL 服务器。我正在关注使用 MySQL 的在线教程,因此使用了以下语句:

mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPassword);

但是sqlsrv不提供这个功能。有没有其他方法可以用 sqlsrv 做到这一点?

提前致谢!

全部代码:

$sql = "INSERT INTO tblUsers (Username, EmailUser, PasswordUser) VALUES (?, ?, ?)";
                $stmt = sqlsrv_stmt_init($conn);

                if(!sqlsrv_stmt_prepare($stmt, $sql)){
                    header("Location: ../signup.php?error=sqlerror");
                    exit();
            }
                else{
                    $hashedPassword = password_hash($password, PASSWORD_DEFAULT)

                    sqlsrv_stmt_bind_param($stmt, "sss", $username, $email, $hashedPassword);
                    sqlsrv_stmt_execute($stmt);
                    header("Location: ../signup.php?signup=succes");
                    exit();
                }

您不应该同时使用 mysqli 和 sqlsrv。立即开始使用 PDO。

如果您想使用 sqlsrv_* 函数执行此操作,手册建议如下:

$con = sqlsrv_connect();

$sql = "INSERT INTO tblUsers (Username, EmailUser, PasswordUser) VALUES (?, ?, ?)";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt = sqlsrv_prepare($con, $sql, [$username, $email, $hashedPassword]);

sqlsrv_execute($stmt);
header("Location: ../signup.php?signup=succes");
exit();

我强烈不建议像这样使用这些功能。如果你不能使用 PDO,那么你应该写一个数据库抽象 class 来避免自己使用这些函数。