来自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",
答案 0 :(得分:1)
看起来你的_pdoQuery()函数在不同的情况下返回不同的类型。在尝试编码之前,您可能需要检查以确保获得了成功的结果。