php-pdo将mysql查询结果输出到多个表列中


php pdo output mysql query results into multiple table columns

我使用的是php-PDO。我想将查询结果输出到3个不同的列中。总行数为8。

它应该显示如下:

value value值
value value值
价值

我只得到前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($subjects)

array(8){[0]=>object(Subject)#3(1){["data":protected]=>array(3)"}[2]=>对象(主题)#5(1){["data":protected]=>数组(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)"4"["subject_name"]=>字符串(4)"数学"["count"]=>string(0)"}}[5]=>object(Subject)#8(1){["data":protected]=>array(3)"["count"]=>字符串(0)"}}[7]=>对象(主题)#10(1){["data":protected]=>array(3){["subject_id"]=>string(1)"1"["subject _name"]=>string(3)"Art"["count"]=>字符串(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() );
          }
       }

试试这个:

$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>';