5

我可以查询我的 dynamodb 表,但我只想检索实际值。我不想要格式化输出。对于 Java,这里已经回答了同样的问题,但我正在寻找 PHP 解决方案: Retrieving just the item value from a dynamodb table?

这是我的 getitem 查询:

$response = $dynamodb->getItem(array(
    "TableName" => $tableName,
    "ConsistentRead" => true,
    "Key" => array(
        "userguid" => array(Type::STRING => $userguid)
    ),
    "AttributesToGet" => array("token")
));
print_r($response["Item"]["token"]);

这是输出:

Array
(
    [S] => 9d194513
)

我想要回来的是:

9d194513

我认为合乎逻辑的答案是将最后一行更改为:

print_r($response["Item"]["token"]["S"]);

但是我的代码根本没有返回任何东西。显然仍然在这里学习 PHP,任何帮助将不胜感激。

4

3 回答 3

3

不要使用print_r函数,只使用echo你的变量

echo $response["Item"]["token"]["S"];

或存储在变量中以备后用

$res_token = $response["Item"]["token"]["S"];
于 2013-06-07T15:24:32.613 回答
2

您还可以使用SDK 为操作返回的对象中getPath内置的便捷方法。Model

echo $response->getPath('Item/token/S');

有关在开发工具包中使用响应的更多信息,请参阅AWS SDK for PHP 用户指南中的响应模型页面。

于 2013-06-08T16:02:55.867 回答
0

虽然这是一个老问题,但对于任何来此页面寻求答案的人来说,这就是我所做的。

getItem返回一个Result对象。您可以调用get()SDK 的函数,它将为您提供一个包含确切值的数组。

$params = [
        "TableName" => "EpgApiAccessCount",
        "Key" => $this->marshalJson('
            {
                "ApiUserKey": "' . $apiUserkey . '"
            }
        ')
    ];

    $result = $this->client->getitem($params);
    if (!$result instanceof ResultInterface) {
        return 0;
    }


    $item = $this->unmarshalItem($result->get("Item"));
    return $item["AccessCount"];

当然,您的值和表名会有所不同,您可以使用该值打印或执行其他任何操作。

于 2021-11-17T21:12:03.407 回答