0

我正在尝试使用 PHP 执行使用对称密钥解密的 SQL 查询。但是我无法得到任何结果。

我的 PHP 代码如下所示:

$sql = "OPEN SYMMETRIC KEY ServerKey DECRYPTION BY CERTIFICATE ServerCertificate WITH PASSWORD = 'P@ssw0rd' SELECT CONVERT(nvarchar, DecryptByKey([address])) AS [address] FROM [serverDBO].[dbo].[allUsers] where id=63";

$result = $db->Execute("$sql");

var_dump($result);

var_dump 命令会导致:

object(ADORecordSet_empty)#200 (6) { ["dataProvider"]=> string(5) "empty" ["databaseType"]=> bool(false) ["EOF"]=> bool(true) ["_numOfRows" ]=> int(0) ["fields"]=> bool(false) ["connection"]=> bool(false) } empty10

  • 但是,如果我在通过 Microsoft 服务器管理工​​作室连接到数据库时执行完全相同的查询,我会成功返回结果:

    71测试路

谁能告诉我这里可能出了什么问题或者我如何在 PHP 中正确地做到这一点?

4

1 回答 1

0

在你$sql有一个SELECT语句,所以你很可能需要在执行语句后获取结果:

$result = $db->execute($sql);
while ($row = $result->fetchRow()) {
  print_r($result);
}

有关详细信息,请参阅ADOdb 文档。

PS 你调用中的双引号execute()什么都不做,你可以省略它们。

于 2016-07-13T11:21:52.910 回答