【问题标题】:Convert string to Varbinary in PHP在 PHP 中将字符串转换为 Varbinary
【发布时间】:2016-07-02 12:37:02
【问题描述】:

我在 php 中有以下代码:

$salt = bin2hex(openssl_random_pseudo_bytes(22));
$hash = crypt($this->input->post("defpswd"), "$2y$12$".$salt);

如果我尝试将 $hash 值保存到带有 varbinary 数据类型字段的 MSSQL 数据库表中,我会收到错误消息:

[Microsoft][ODBC SQL Server Driver][SQL Server]隐式转换 不允许从数据类型 varchar 到 varbinary。使用转换 运行此查询的函数。

$hash 变量包含:

'$2y$12$35695d29f921c713eba4fu1VY0q6VF6HryPH9HjiLvHOoupXWvPn.'

如果我使用 is it possible to convert a string to varbinary in PHP without using the SQL function 中的二进制文件来转换 $hash,我会得到相同的错误。 我正在使用带有 odbc 连接的 CodeIgniter 和 MSSQL 数据库。我做错了什么?谢谢。

【问题讨论】:

    标签: php sql-server codeigniter odbc


    【解决方案1】:

    $hash 不是二进制的,它是一个字符串,它已经过 Base64 编码并且 Base64 是一个字符 (ASCII)。只需使用varchar DB 类型即可。

    没有理由将其转换为varbinary

    【讨论】:

    • 我正在尝试使用表字段类型为 varbinary 的现有数据库。我无法更改字段类型。感谢您的回复。
    • 这似乎是一个麻烦的决定,并且会在未来几年被讨厌。有点像一对有点窄和短的节目。
    • 真是个麻烦的决定
    • 做“正确的事”,你知道那是什么,未来会感谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多