【发布时间】:2017-08-03 13:20:05
【问题描述】:
我使用 PHP、IIS 和 SQL Server 2016 作为后端。我一直在使用加密功能。为此,我能够以纯文本形式选择数据。但无法将数据插入表中。 我正在使用这样的代码。
$queryInsert = "insert into empinfo (EmpID, JobTitle, LoginID, NatID) values
(?,?,?,?)";
$res = odbc_prepare($connect, $queryInsert);
$result = odbc_execute($res, array($empId, $jobTitle, $loginId, $natId));
我收到这样的错误。
PHP Warning: odbc_prepare(): SQL error: [Microsoft][ODBC Driver 13 for SQL
Server][SQL Server]Operand type clash: void type is incompatible with
nvarchar(256) encrypted with (encryption_type = 'DETERMINISTIC',
encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',
column_encryption_key_name = 'CEK_Auto1',
column_encryption_key_database_name = 'Test'), SQL state 22005 in
SQLDescribeParameter in C:\inetpub\wwwroot\odbctest\odbctest.php on line 22
PHP Warning: odbc_execute() expects parameter 1 to be resource, boolean
given in C:\inetpub\wwwroot\odbctest\odbctest.php on line 23
谁能告诉我我哪里做错了。
【问题讨论】:
-
您是否遵循此处指定的 DSN 配置:docs.microsoft.com/en-us/sql/connect/odbc/…?并配置了客户端密钥?
-
感谢大卫的及时回复。是的,我根据您指定的文章配置了 DSN,并且还配置了客户端密钥,并且工作正常,因为我能够从代码中运行 select 语句。
标签: php sql-server odbc always-encrypted