2013-07-30 98 views
2

。我想将查询结果输出到3个不同的列中。总行数是8。PHP PDO输出MySQL查询结果到我使用PHP PDO多个表列

它应该显示如下:

值值值
值值值
值值

我只得到所述第一3个值。

这是我的代码:

<?php 
    $subjects = Subject::getAllSubjects(); 

    $rows = 8; 
    $rcounter = 1; 
    $cols = 3; 
    echo '<table>'; 

for($i = 0; $i < $rows/$cols; $i++) { 
    foreach($subjects as $subject){ 
     echo '<tr>'; 

     for($j=0; $j < $cols && $rcounter <= $rows ;$j++, $rcounter++) { 
      echo "<td>".$subject->getValueEncoded('subject_name')."</td>"; 
     } 
     echo '</tr>'; 
    } 
} 
    echo '</table>'; 
    ?> 

这里是一个的var_dump($受试者)

阵列(8){[0] =>对象(受试者)#3(1){[”数据“:protected] => array(3){[”subject_id“] => string(1)”8“[”subject_name“] => string(7)”Theatre“[”count“] => string(0 )“>”}} [1] => object(Subject)#4(1){[“data”:protected] => array(3){[“subject_id”] => string(1)科学“[”count“] => string(0)”“}} [2] => object(Subject)#5(1){[”data“:protected] = > array(3){[“subject_id”] => string(1)“6”[“subject_name”] => string(13)“Language Arts”[“count”] => string(0 )“>}} [3] => object(Subject)#6(1){[”data“:protected] => array(3){[”subject_id“] => string(1) subject_name“] => string(10)”Literature“[”count“] => string(0)”“}} [4] => object(Subject)#7(1){[”data“:protected] = > array(3){[“subject_id”] => string(1)“4”[“subject_name”] => string(4)“Math”[“count”] => string(0)“”}} 5] => object(Subject)#8(1){[“data”:protected] => array(3){[“subject_id”] => string(1)“3”[“subject_name”] => string (14)“Social Studies”[“count”] => string(0)“”}} [6] => object(Subject)#9(1){[“data”:protected] => array(3) {[ “subject_id”] =>串(1) “2”[ “SUBJECT_NAME”] =>串(10) “视觉艺术”[ “计数”] =>串(0) “”}} [7] => object(Subject)#10(1){[“data”:protected] => array(3){[“subject_id”] => string(1)“1”[“subject_name”] => string(3)“技术” [ “计数”] =>串(0) “”}}}

这是我的主题类:

require_once("DataObject.class.php"); 

class Subject extends DataObject { 

    protected $data = array(
     "subject_id" => "", 
     "subject_name" => "", 
     "count" => "" 
    ); 

     public function getCount() { 
     $conn = parent::connect(); 
     $sql = "SELECT subject_name, count(*) as count FROM " . TBL_SUBJECT; 

     try { 
      $st = $conn->prepare($sql); 
      $st->execute(); 
      $subjects = array(); 
      foreach ($st->fetchAll() as $row) { 
       $subjects[] = new subject($row); 
      } 
      parent::disconnect($conn); 
      return $subjects; 
      } catch (PDOException $e) { 
      parent::disconnect($conn); 
      die("Query failed: " . $e->getMessage()); 
      } 
     } 


     public function getAllSubjects() { 
     $conn = parent::connect(); 
     $sql = "SELECT * FROM " . TBL_SUBJECT . " ORDER BY subject_id DESC"; 

     try { 
      $st = $conn->prepare($sql); 
      $st->execute(); 
      $subjects = array(); 
      foreach ($st->fetchAll() as $row) { 
       $subjects[] = new subject($row); 
      } 
      parent::disconnect($conn); 
      return $subjects; 
      } catch (PDOException $e) { 
      parent::disconnect($conn); 
      die("Query failed: " . $e->getMessage()); 
      } 
     } 
+0

它看起来像行计数器停留在1 - 尝试添加'$ rcounter ++'你'foreach'块的底部。 – ygesher

+0

的$ rcounter没有工作 – user2091928

回答

0

试试这个:

$subjects = Subject::getAllSubjects(); 

$rows = 8; 
$rcounter = 1; 
$cols = 3; 

echo '<table>'; 

foreach($subjects as $subject){ 
    echo '<tr>'; 
    for($i = 0; $i < $rows ; $i++) { 
     // echo "<td>".$subject->getValueEncoded('subject_name')."</td>"; 
     echo "<td>".$subject[$i]->getValueEncoded('subject_name')."</td>"; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 
+0

我得到相同的结果 – user2091928

+0

请问这个:$主题=主题:: getAllSubjects();回报? – Maximus2012

+0

查看已更新的答案。这是否工作? – Maximus2012