json_encode在输入中需要什么?

时间:2012-05-30 19:22:49

标签: php mysql

来自php.net reference

  

正在编码的值。可以是除资源之外的任何类型。   此功能仅适用于UTF-8编码数据。

但是,我在一个案例中使用这样的函数,它可以正常工作:

$result_array = $this->DatabaseObject->_pdoQuery( 'multiple', 'bookmark_model', array( $this->SessionObject->get( 'id' ) ) );
$result_string =  json_encode( $result_array );
$html_string = "<div id='bookmark_data'>" . $result_string . "</div>";
echo $html_string;

但在这种情况下它不会:

$result_array = $this->DatabaseObject->_pdoQuery( 'multiple', 'tweet_model' );
// $tweet_object = new MarkTweet();
$result_string = json_encode( $result_array );
$html_string = "<div id='tweet_data'>" . $result_string . "</div>";
echo $html_string;

在这两种情况下,我都使用PDO库来查询数据库。我知道我得到的本质上应该是一个数组数组...但我不知道这是不是资源......或者它是如何在内部构建的。

我可以看到的查询之间没有重大区别......但是在这里它们是。因为这两种情况非常相似,所以我不知道导致失败的原因。

以下是查询

"bookmark_model" =>         "SELECT * FROM bookmarks WHERE id=? ORDER BY tag, title",

"tweet_model" =>            "SELECT * FROM tweets ORDER BY time DESC LIMIT 7",

1 个答案:

答案 0 :(得分:1)

看起来你的_pdoQuery()函数在不同的情况下返回不同的类型。在尝试编码之前,您可能需要检查以确保获得了成功的结果。