【问题标题】:Prepared statements with SQL SERVER使用 SQL SERVER 准备的语句
【发布时间】:2020-05-01 11:40:42
【问题描述】:

我正在为我的数据库使用 Microsoft SQL Server。我正在关注使用 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();
                }

【问题讨论】:

标签: php sql-server sqlsrv


【解决方案1】:

您不应该既不使用 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,那么你应该写一个数据库抽象类来避免自己使用这些函数。

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 2021-10-24
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多