0

ここに 2 つのサンプルがあります。

1.

コントローラーで

 $result_article = $this->cms->get_content($event_id);
 if($result_article->num_rows() == 1){
 $data['row'] = $result_article->row();
}

私からしてみれば

<?php echo $row->title; ?>

print_r($row)/print_r($result_article->row()); 出力

stdClass Object ( [id] => 43 [title] => Grant visit by Prime Minister [content] => this is the content [create_date] => 2012-09-21 [last_update] => 2012-09-22 19:27:12 )

エラーが表示された

A PHP Error was encountered
Severity: 4096
Message: Object of class stdClass could not be converted to string
Filename: libraries/Parser.php
Line Number: 101

2.

コントローラーで

$result_article = $this->cms->get_content($event_id);

                    if($result_article->num_rows() == 1){
                        $row = $result_article->row();

                          $data = array(
                             'title' => $row->title
                          );
}

私からしてみれば

<?php echo $title; ?>

print_r($title) 出力

Grant visit by Prime Minister

エラーなし。

1 番目のコントローラーと 2 番目のコードの違いは何ですか。同じ出力であると思われますか? 私は混乱しています!

より明確にするために、コードを簡略化しました

ここにモデルがあります

function get_content($event_id){
     $this->db->select('id,title,content,create_date,last_update');
     $query = $this->db->get_where('events',array('id' => $event_id));
     return $query;
}

コントローラー

$data['query']  = $this->cms->get_content($this->uri->segment(3));

if($data['query']->num_rows() == 1){
$row = $data['query']->row();

<!--with this code, no error appear-->
$data = array(
'title' => $row->title,
'content' => $row->content,
'create_date' => $row->create_date,
'last_update' => $row->last_update,
'event_id' => $row->id
              );
<!--with this code, no error appear--> 

これらのコードのみの場合

$data['query']  = $this->cms->get_content($this->uri->segment(3));

    if($data['query']->num_rows() == 1){
    $row = $data['query']->row();

エラーが発生し、

A PHP Error was encountered
Severity: 4096
Message: Object of class CI_DB_mysql_result could not be converted to string
Filename: libraries/Parser.php
Line Number: 101
4

3 に答える 3

1

状況1のあなたの見解では、

<?php echo $article->row->title; ?>

コードを状況 2 と同じにします。

私が見たように、$article は行のコレクションであるため、記事から行にアクセスしてから、その行のタイトルを取得する必要があります。

于 2012-09-22T19:58:48.553 に答える
0

この問題がある場合は、\system\libraries\Parser.php を次のように置き換えます。

$template = $this->_parse_single($key, (string)$val, $template);

に:

if (!is_object($val)) $template = $this->_parse_single($key, (string)$val, $template);
于 2016-09-05T12:51:35.907 に答える