使用PHP的DynamoDB,update_item错误

时间:2012-05-18 22:44:01

标签: php amazon-web-services amazon-dynamodb

我正在尝试使用PHP SDK更新DynamoDB表中的表。这是错误:

com.amazon.coral.service#SerializationException 找到列表的开头

我猜我的数组格式有问题。我正在使用此documentation作为参考。

我发送的数组:

array(3) {
  ["TableName"]=>
  string(7) "teacher"
  ["Key"]=>
  array(1) {
    ["HashKeyElement"]=>
    array(1) {
      ["S"]=>
      string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D"
    }
  }
  ["AttributeUpdates"]=>
  array(1) {
    [0]=>
    array(2) {
      ["population"]=>
      array(1) {
        ["Action"]=>
        string(3) "ADD"
      }
      ["Value"]=>
      array(1) {
        ["SS"]=>
        array(1) {
          [0]=>
          string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D"
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

AttributeUpdates中的“population”错误地放在数组中。它应该是元素的关键,而不是元素本身。 “Value”和“Action”都是数组元素的一部分:结构应该是:

array(3) {
  ["TableName"]=>
  string(7) "teacher"
  ["Key"]=>
  array(1) {
    ["HashKeyElement"]=>
    array(1) {
      ["S"]=>
      string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D"
    }
  }
  ["AttributeUpdates"]=>
  array(1) {
    ["population"]=>
    array(1) {
      ["Value"]=>
      array(2) {
        ["SS"]=>
        array(1) {
          [0]=>
          string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D"
        }
        ["Action"]=>
        string(3) "ADD"
      }
    }
  }
}

来源:

$updateOptions = array(
  'TableName'    => 'teacher',
  'Key'          => array(
      'HashKeyElement'  => array('S' => '97770A6A-EF06-AF4A-3E30-87DAC0237F6D'),
  ),
  'AttributeUpdates' => array(
      'population'    => array('Value' => array('SS' => array('97770A6A-EF06-AF4A-3E30-87DAC0237F6D'), 'Action' => 'ADD')),
  )
);