我在php中有以下代码:
$salt = bin2hex(openssl_random_pseudo_bytes(22));
$hash = crypt($this->input->post("defpswd"), "$2y$12$".$salt);
如果我尝试使用varbinary数据类型字段将$ hash值保存到MSSQL数据库表,我会收到错误消息:
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]隐式转换 从数据类型varchar到varbinary是不允许的。使用CONVERT 用于运行此查询的函数。
$ hash变量包含:
'$ 2Y $ 12 $ 35695d29f921c713eba4fu1VY0q6VF6HryPH9HjiLvHOoupXWvPn。'
如果我在is it possible to convert a string to varbinary in PHP without using the SQL function中使用二进制来转换$ hash,我会得到相同的错误。 我正在使用带有odbc连接的CodeIgniter和MSSQL数据库。我不对的是什么?谢谢。
答案 0 :(得分:0)
alist
不是二进制,它是一个字符串,它是Base64编码的,Base64是一个字符(ASCII)。只需使用$hash
数据库类型。
没有理由将其投放到varchar
。