【问题标题】:[RIAK-PHP-CLIENT]: Fetch and display JSON text data on localhost from Riak[RIAK-PHP-CLIENT]:从 Riak 获取并在本地主机上显示 JSON 文本数据
【发布时间】:2014-12-10 14:52:08
【问题描述】:

我已经使用官方的 Basho riak-php-client 成功地在我的 riak 数据库和 localhost 之间建立了连接:

https://github.com/basho/riak-php-client

在我的 Riak 数据库中,我有很多与 JSON 数据一起存储的密钥。有没有简单有效的方法在本地主机上显示文本数据?到目前为止,我已经能够使用以下代码显示简单的其他值:

     <?php

                require_once('src/Basho/Riak/Riak.php');
                require_once('src/Basho/Riak/Bucket.php');
                require_once('src/Basho/Riak/Exception.php');
                require_once('src/Basho/Riak/Link.php');
                require_once('src/Basho/Riak/MapReduce.php');
                require_once('src/Basho/Riak/Object.php');
                require_once('src/Basho/Riak/StringIO.php');
                require_once('src/Basho/Riak/Utils.php');
                require_once('src/Basho/Riak/Link/Phase.php');
                require_once('src/Basho/Riak/MapReduce/Phase.php');

                        $client = new Basho\Riak\Riak('172.31.42.72', 10018);

                        $myBucket = $client->bucket('test');
                        $myBucket1 = $client->bucket('world');


                        $val1 = 1;
                        $obj1 = $myBucket-> newObject('one', $val1);
                        $obj1->store();

                        $val2 = 'two';
                        $obj2 = $myBucket->newObject('two', $val2);
                        $obj2->store();

                        $val3 = array('myValue' => 3);
                        $obj3 = $myBucket->newObject('three', $val3);
                        $obj3->store();

                        $fetched1 = $myBucket->get('one');
                        $fetched2 = $myBucket->get('two');
                        $fetched3 = $myBucket->get('three');
                        $fetched4 = $myBucket1->get('542660947589230592');


                        assert($val1 == $fetched1->getData());
                        assert($val2 == $fetched2->getData());
                        assert($val3 == $fetched3->getData());

                        $obj = json_decode(fetched4);
                        print $obj->{'<<"text">>'};


           ?>

在这段代码中,我还尝试显示变量 $fetched4 中的 JSON 数据,并从存储桶“world”中查询,但是当我尝试使用这两行代码显示它时:

 $obj = json_decode(fetched4);
 print $obj->{'<<"text">>'};

什么都不显示。有任何想法吗?

编辑

这里是 apache2 错误日志,虽然我不确定它们是否完全是最新的:

[2014 年 12 月 10 日星期三 14:05:20.894220] [:error] [pid 4610] [client 129.16.723.16:44285] PHP 注意:使用未定义的常量 fetched4 - 在 /var/www/html/index.php 的第 52 行假设为“fetched4”

[14:05:20.894240 2014] [:error] [pid 4610] [client 129.16.723.16:44285] PHP 注意:试图获取非对象的属性 /var/www/html/index.php 第 53 行[12 月 10 日星期三

【问题讨论】:

    标签: php json text localhost riak


    【解决方案1】:

    试试……

     $obj = json_decode($fetched4);
    

    除非在此处输入您的示例时出现拼写错误,否则您将错过 $fetched4 上的 $

    日志条目PHP Notice: Use of undefined constant fetched4 - assumed 'fetched4' 指出这是一个真正的问题,而不仅仅是您在这里所做的事情。

    【讨论】:

    • 啊,当然。我做了一些额外的更改,因为我仍然收到警告和通知,所以现在我的 PHP 代码基本上包括: $client = new Basho\Riak\Riak('172.31.42.72', 10018); $jsondata = $client->bucket('world'); $json = json_decode($jsondata, true);回声 $json['542660947589230592'][0]['text'];
    • 仍然收到此错误:[Thu Dec 11 13:36:53.590991 2014] [:error] [pid 4611] [client 129.16.233.32:39014] PHP 警告:json_decode() 需要参数 1是字符串,在第 29 行的 /var/www/html/index.php 中给出的对象
    • 在上面的 cmets 中很难看到您的代码,但看起来您正在将一个桶塞入 $jsondata,而不是通过它的键从该桶中获取您想要的值?
    • 是的,我也注意到了这一点,但我仍然遇到同样的错误:“PHP 警告:json_decode() 期望参数 1 是字符串,对象在 /var/www/html 中给出第 33 行的 /index.php PHP 警告:在第 35 行的 /var/www/html/index.php 中为 foreach() 提供的参数无效"
    • 抱歉代码难以阅读,这里有点新,我很难格式化我的 cmets 哈哈。代码:$myBucket = $client-&gt;bucket('world'); $fetched = $myBucket-&gt;get('542660947589230592'); $result = json_decode($fetched, true); foreach ($result['data'] as $tweet) { echo $tweet['text'], '&lt;br&gt;'; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多