检查输入框中的字符串是否等于 SQL 服务器中的 varbinary(max),PHP | SQL 服务器 2012

Check if string in input box is equal to varbinary(max) in SQL SERVER, PHP | SQL SERVER 2012

我的登录页面有问题。

我正在将我的密码从字符串转换为 varbinary(max),我现在的问题是如何比较或验证我输入的用于登录的字符串是否等于 table 中存储的数据.

示例。

我的密码转换前的值为12345。通过 CONVERT(varbinary(max),'12345') 转换后,数据现在反映为 0x3132333435.

如何验证我在输入框中输入的密码(12345)是否与转换为varbinary(max)0x3132333435的值相似?

我正在使用 SQL SERVER 2012、XAMPP 和 SQLSRV 进行连接。

在此先感谢您。

这是我的login.php

<?php
    session_start();
    include 'includes/conn.php';

    if (isset($_POST['login'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $sql = "
SELECT username,cast(password as varchar(max)) as password 
FROM usermasterfile 
WHERE username ='$username'";

        include 'query/sqlsrv_query-global.php';

        if (sqlsrv_num_rows($query) < 1) {
            $_SESSION['error'] = 'Cannot find account with the username';
        } else {
            $row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC);
            if ($password == $row['password']) {
                $_SESSION['employeeidno'] = $row['employeeidno'];
            }
            else{
                $_SESSION['error'] = 'Incorrect password';
            }
        }
    }
    else{
        $_SESSION['error'] = 'Input credentials first';
    }

    header('location: index.php');
?>

编辑:已修复!

SELECT *,cast(password as varchar(max)) as maxpassword 
FROM usermasterfile 
WHERE username ='$username'";````

您可以将 varbinary 转换回 varchar 值,如

SELECT cast(0x3132333435 as varchar(max)) as varchar_value

varchar_value
-------------
12345

因此,请在代码的比较部分使用上述转换。