2016-05-07 3 views
0

Я пытался научиться PDO вместо MySQL при использовании PHP, у меня есть немного кода я не могу видеть, где ошибка:PDO ошибка не может использовать объект типа StdClass как массив

<?php 

include('includes/db_connection.php'); 
include('includes/sessions.php'); 
include('includes/functions.php'); 
include('includes/header.php'); 
include('includes/loginnav.php'); 

$row = DB::getInstance()->selectOneByField('membership', 'username', $member); 

$logged_in_users_id = $row['id']; 

$result3 = DB::getInstance()->select(' 
    SELECT * 
    FROM `pms` 
    WHERE `sender_id` = :logged_in_users_id 
    ORDER BY `date_added` DESC', 
[ 
    'logged_in_users_id' => $logged_in_users_id 
]); 

if (count($result3) == 0) { 
    stderr('No messages have been sent. (<a href="inbox.php">Inbox</a>)'); 
} 

?> 

<div class="panel panel-primary"> 
    <div class="panel-heading">Sentbox</div> 
    <div class="panel-body"> 
     <table class="table table-striped table-condensed table-responsive table-hover"> 
      <thead> 
       <tr> 
        <th>Subject</td> 
        <th>Date Sent</td> 
        <th>To User</td> 
        <th>Read (<font color="green">Y</font>&nbsp;/&nbsp;<font color="red">N</font>)</td> 
       </tr> 
      </thead> 
      <tbody> 
       <?php foreach ($result3 as $row) { ?> 
        <?php 
         $id = $row['id']; 
         $sendee_id = $row['reciever_id']; 
         $read = $row['read_flag']; 
         $row = DB::getInstance()->selectOneByField('membership', 'id', $sendee_id); 
         $sendee = $row['username']; 
         $sendee_id = $row['id']; 
         $row_2 = DB::getInstance()->selectOneByField('pms', 'reciever_id', $logged_in_users_id, PDO::FETCH_OBJ); 
        ?> 
        <tr> 
         <td><strong><?php echo htmlspecialchars($row_2['subject']) ?></strong></td> 
         <td><?php echo htmlspecialchars($row_2['date_added']) ?></td> 
         <td><a href="user-details.php?id=<?php echo $sendee_id ?>"><?php echo htmlspecialchars($sendee) ?></td> 
         <td style="color: <?php echo ($read == 'Y')? 'green': 'red' ?>"><strong><?php echo htmlspecialchars($read) ?></strong></td> 
        </tr> 
       <?php } ?> 
      </tbody> 
     </table> 
    </div> 
</div> 

ошибка: «PHP Фатальная ошибка: не удается использовать объект типа StdClass как массив в» в строке 52, на букву на этой линии:

<td><strong><?php echo htmlspecialchars($row_2['subject']) ?></strong></td> 

Я пытался отладить то, что ошибка, но я застрял на минуту, любая помощь будет оценена по достоинству.

+0

Ошибка сообщает вам, в чем проблема. '$ row_2' - это объект, но вы пытаетесь получить к нему доступ в виде массива. –

+2

... иными словами try '$ row_2-> subject' – Mikey

+0

Спасибо Mikey! отлично работал :) – graham23s

ответ

2

Попробуйте $row_2->subject вместо $row_2['subject']

При использовании доступа к объектам StdClass ->.

+0

Спасибо Prax a noob error! – graham23s

Смежные вопросы