【问题标题】:insert into always encrypted field sqlserver 2016 from php 7.1从 php 7.1 插入始终加密的字段 sql server 2016
【发布时间】: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


【解决方案1】:

请尝试指定参数类型如下

/* Construct the parameter array. */  
$employeeId = 5;  
$changeDate = "2005-06-07";  
$rate = 30;  
$payFrequency = 2;  
$params1 = array(  
               array($employeeId, null),  
               array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),  
               array($rate, null, null, SQLSRV_SQLTYPE_MONEY),  
               array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)  

This article 解释如何使用 ODBC 13.1 驱动程序始终加密

【讨论】:

  • 您好 Nikhil,感谢您提供的信息。但提供的文章使用 sqlsrv 驱动程序,但 [blogs.msdn.microsoft.com/sqlphp/2016/07/11/… 不支持始终加密。所以我试图使用 odbc 13.1
  • 我知道我会从我的答案中删除链接。使用 odbc 驱动时,能否提供参数的参数类型?您也许可以按照我上面描述的方式指定参数类型。
  • 没有尼基尔。我没有看到任何可以在 odbc 13.1 中提供参数类型的参数...现在我正在使用 pdo,但这也不被接受。
  • 你看过这篇文章了吗,docs.microsoft.com/en-us/sql/connect/odbc/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多