需要一个完整的phpo DynamoDB示例

use*_*821 11 php database amazon-web-services nosql amazon-dynamodb

我想在php中写服务 -

1)DynamoDB将具有带有两列key和val的表t

2)我将检查表t中是否存在某个键.

3)如果存在读取数据..如果不存在则在表t中插入新的键值

我正在检查一些链接 http://docs.aws.amazon.com/AWSSDKforPHP/latest/index.html#m=AmazonDynamoDB/put_item http://docs.aws.amazon.com/aws-sdk-php/guide/最新的/快速的start.html

要跟哪一个?

也有人可以给我快速示例和确切的语法.

提前致谢.

iSk*_*ore 32

完整的演练位于这里.它为您提供了凭证设置过程的逐步概述,并附带了一个易于使用的PHP SDK for AWS

AWS设置 - AWS没有按步骤设置您的凭据设置,所以我会.
  • 1.转到AWS并获取PUBLIC_KEYPRIVATE_KEY

    • AWS确实为此HEREHERE提供了教程
  • 2.打开终端

  • 3.如果您尚未创建凭据,请在终端的新页面中输入:

    nano ~/.aws/credentials
    
    Run Code Online (Sandbox Code Playgroud)
    • nano功能页面将打开.你会看到GNU nano 2.0.6...顶部.
  • 4.nano页面内输入:

    [default]
    aws_access_key_id = public_key_ABCDEFGHIJKLMNOPQRSTUVWXYZ
    aws_secret_access_key = private_key_s0m3_CR42Y_l3tt3rS_i5y0ur53cr3tK3y
    
    Run Code Online (Sandbox Code Playgroud)
  • 5.输入后,按CONTROL + X(是...控制,而不是命令).

  • 6.命中ÿ然后ENTER
  • 7.获取[AWS_SDK_PHP] [4]
  • 8.转到你的Elastic Beanstalk
  • 9.完成应用程序创建后,您会看到带有绿色检查的" 概述"屏幕.查看侧面并点击配置.
  • 10.软件配置 - > 文档根目录下:输入:/
  • 11.Property Name - > AWS_ACCESS_KEY_ID下输入:[your_access_key]
  • 12.AWS_ACCESS_KEY_ID下AWS_SECRET_KEY,输入:[your_secret_key]
  • 13. PHP项目准备好后.将所有文件放入一个文件夹.将文件夹命名为[whatever],然后压缩[whatever]中的文件.不要压缩整个文件夹.仅压缩文件夹中的文件.如果其中一个文件包含index.phpindex.html,则您的项目将显示在EBS默认URL上.
  • 14.您的项目应称为Archive.zip(Mac).转到EBS,上传拉链,然后你去!全部使用AWS Setup完成!
AWS设置
  • 1.AWS_SDK_PHP放在空文件夹中
  • 2. 使用SDK(index.php或其他)在文件的顶部,输入:

    require 'aws/aws-autoloader.php';
    date_default_timezone_set('America/New_York');
    
    use Aws\DynamoDb\DynamoDbClient;
    
    $client = new DynamoDbClient([
        'profile' => 'default',
        'region'  => 'us-east-1',
        'version' => 'latest'
    ]);
    
    Run Code Online (Sandbox Code Playgroud)


  • 数据类型
    • S =字符串
    • N =数字
    • B =二进制


  • 基本方法

    • 描述表

      $result = $client->describeTable(array(
          'TableName' => '[Table_Name]'
      ));
      
      echo $result;
      
      Run Code Online (Sandbox Code Playgroud)
    • 放项目

      $response = $client->putItem(array(
          'TableName' => '[Table_Name]', 
          'Item' => array(
              '[Hash_Name]'   => array('S' => '[Hash_Value]'),
              '[Range_Name]'  => array('S' => '[Range_Value]')
          )
      ));
      
      //Echoing the response is only good to check if it was successful. Status: 200 = Success
      echo $response;
      
      Run Code Online (Sandbox Code Playgroud)
    • 获取物品

      $response = $client->getItem(array(
          'TableName' => '[Table_Name]',
          'Key' => array(
              '[Hash_Name]'  => array('S' => '[Hash_Value]'),
              '[Range_Name]' => array('S' => '[Range_Value]')
          )
      ));
      
      echo $response;
      
      Run Code Online (Sandbox Code Playgroud)
    • 删除项目

      $response = $client->deleteItem(array(
          'TableName' => '[Table_Name]',
          'Key' => array(
              '[Hash_Name]'  => array('S' => '[Hash_Value]'),
              '[Range_Name]' => array('S' => '[Range_Value]')
          )
      ));
      //Echoing the response is only good to check if it was successful. Status: 200 = Success
      echo $response;
      
      Run Code Online (Sandbox Code Playgroud)
    • 查询项目

      $response = $client->query(array(
          'TableName' => '[Table_Name]',
          'KeyConditionExpression' => '[Hash_Name] = :v_hash and [Range_Name] = :v_range',
          'ExpressionAttributeValues' =>  array (
              ':v_hash'  => array('S' => '[Hash_Value]'),
              ':v_range' => array('S' => '[Range_Value]')
          )
      ));
      
      echo $response;
      
      Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.