【问题标题】:PHP & Mysql -Queries using symmetric key decryptionPHP & Mysql - 使用对称密钥解密的查询
【发布时间】:2016-07-13 10:38:39
【问题描述】:

我正在尝试使用 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) "空" ["databaseType"]=> bool(false) ["EOF"]=> bool(true) ["_numOfRows"]=> int(0) ["fields"]=> bool(false) ["connection"]=> 布尔(假)}空10

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

    71 测试路

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

【问题讨论】:

    标签: php sql-server encryption encryption-symmetric adodb-php


    【解决方案1】:

    在您的$sql 中有一个SELECT 语句,因此您很可能需要在执行该语句后获取结果:

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

    更多详情请见ADOdb documentation

    附: execute() 调用中的双引号什么也不做,您可以省略它们。

    【讨论】:

    • 感谢Joachim 的回复,我已提出修改建议。不幸的是,我仍然没有收到任何结果。
    • 但至少应该有另一个错误信息。也许它说明了什么仍然是错误的
    • 按照上面的建议使用 print_r 对我来说根本没有输出,也没有以这种方式显示的错误消息。如果我改用 var_dump 命令,它似乎只表明没有返回任何内容。
    猜你喜欢
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2017-11-20
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多