logo
  • Home
  • ソフトウェア
    • アタッシェケースアイコン
      アタッシェケース

      ファイル暗号化ツール(Windows)

    • MarkDown#Editorアイコン
      MarkDown#Editor

      Markdownデュアルエディタ(Windows)

    • OutlineTextアイコン
      OutLineText

      Markdownによるアウトライナー(macOS)

    • OutlineTextアイコン
      BossComing

      一瞬で偽デスクトップに差し替え(Windows)

  • 開発ツール
    • Png2WinIco

      PNGからWindowsICOファイル生成(Windows)

    • SHCode-JP-Zen-Haku

      プログラミング用等幅フォント(Windows, macOS)

    • 秀丸エディタ・日付挿入マクロ

      柔軟な日付挿入可能な「秀丸エディタ」専用マクロ

    • 秀丸エディタ・Markdown強調表示定義ファイル

      「秀丸エディタ」専用の強調表示定義ファイル

  • このサイトについて
  • ブログ
  1. Home
  2. Blog
2019年07月02日 17:33 更新

Amazon DynamoDB(AWS SDK for PHP 2)のqueryでFatal Error

hibara

2013年9月23日 19:41 DynamoDB PHP

前回の記事から引き続き、Amazon DynamoDBに奮闘中です。

どうにかこうにかテーブルをつくって、putItemやgetItemは無難にできるようになったのですが、ハッシュキーと、レンジキーを指定しての「query」で、Fatalエラーが大量に返ってくる。

公式Webサイトのドキュメントには、以下のサンプルコードが載っているのですが、そのまま書いてもダメ。

http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonDynamoDB/query

[php]
$response = $dynamodb->query(array(
‘TableName’ => $table_name,
‘HashKeyValue’ => array(
AmazonDynamoDB::TYPE_NUMBER => ‘1’
),
‘RangeKeyCondition’ => array(
‘ComparisonOperator’ => AmazonDynamoDB::CONDITION_GREATER_THAN_OR_EQUAL,
‘AttributeValueList’ => array(
array(AmazonDynamoDB::TYPE_NUMBER => ‘0’)
),
)
)
);
[/php]

・・・ん? と、よく見たら、ページタイトルが「AWS SDK for PHP 1.6.2」とある。

そういえば、インストールしたのは、カレントバージョンの「AWS SDK for PHP 2」だったような・・・

で、改めて最新のドキュメントの、

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

を見返してみると、「Request Syntax」の仕様が微妙に変わっている・・・

なんだってー(笑)。

で、結局のところ、上記のサンプルコードを for PHP 2 で書き換えると、以下のようになりました。

[php]
$response = $dynamodb->query(array(
‘TableName’ => $table_name,
‘KeyConditions’ => array(
$hash_key_name => array(
‘AttributeValueList’ => array(
array(‘N’ => ‘1’)
),
‘ComparisonOperator’ => ‘EQ’
),
$range_key_name => array(
‘AttributeValueList’ => array(
array(‘N’ => ‘0’)
),
‘ComparisonOperator’ => "GE"
)
)
)
);
//ついでにそのレスポンスからjson形式にして返す
if (intval($response[‘Count’]) > 0){
foreach ($response[‘Items’] as $item){
$array_return[] = array(
$hash_key_name => $item[$hash_key_name][‘N’],
$range_key_name => $item[$range_key_name][‘N’],
//他に値があれば連想配列につっこむ
//’val00′ => $item[‘val00’][‘S’],
//’val01′ => $item[‘val01’][‘N’],
);
}
echo json_encode($array_return);
}
else{
echo ""; //該当のデータがない
}
[/php]

“$hash_key_name” には、ハッシュキーにしたカラム名をstringで指定し、“$range_key_name”には、レンジキーとして指定したカラム名を同様にstringで記述します。

こういう仕様になったのは、セカンダリインデックスなどの仕様が追加されたからでしょうか。

そういえば、Amazon DynamoDBのトップページは、「(ベータ版)」と明記されていました。そうなのか(笑)。だからこういう大変更もあるのですね。。。それにしてもベータ版にお金が発生するとか・・・

Web上にもあまりサンプルコードがなかったので、シェアする意味も含め、ここにメモしておきます。


コメントする     返信コメントをキャンセル(閉じる)

メールアドレスが公開されることはありません。

これらの HTML タグと属性を使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

HiBARA blog

日々の開発作業で気づいたこと共有を。同じところで躓いている人が、 検索で辿り着けたら良いな、というスタンスで記事を書くので不定期更新になります。

Post Categories

  • BizSpark (1)
  • C# (10)
  • C++ (2)
  • C++Builder (2)
  • C++Builder XE4 (1)
  • CoffeeScript (3)
  • DynamoDB (2)
  • Electron (1)
  • Inno Setup (3)
  • iPhone (1)
  • JavaScript (11)
  • jQuery (3)
  • Mac OSX (2)
  • Markdown (2)
  • MarkDown#Editor (5)
  • PHP (7)
  • Qt (5)
  • SHA-3 (2)
  • Smarty (2)
  • アタッシェケース (23)
  • など (2)
  • フォント (1)
  • プログラミング (33)
  • 未分類 (1)

Tags

  • DLL
  • exe
  • Inno Setup
  • NuGet
  • signtool
  • コードサイニング証明
  • サテライトアセンブリ
  • マージ
  • 光コラボレーション
  • 株式会社CL

© 2011-2023 M.Hibara

Facebook icon
Twitter icon
GitHub icon
Qiita icon