Подготовленные заявления с SQL SERVER - PullRequest
0 голосов
/ 01 мая 2020

Я использую 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();
                }

1 Ответ

0 голосов
/ 01 мая 2020

Вы не должны использовать ни 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, вы должны написать класс абстракции базы данных, чтобы избежать использования этих функций самостоятельно.

...