PHP / SQL - 查询未显示所有数据

时间:2013-11-18 14:45:08

标签: php mysql sql

以下是代码:

            <?php 
            if(isset($_POST['results']) && $_POST['results'] != -1) {
            $db = new PDO('mysql:host=localhost;dbname=;charset=utf8', '', '');

            echo "<table border='1'>
            <tr>
            <th>Courses</th>
            </tr>";

            $stmt = $db->prepare("SELECT title FROM course WHERE `subject_id`=?");
            $stmt->execute(array($_POST['results']));

            if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

                     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

                     echo "<tr>";
                     echo "<td>", $row['title'], "</td>";
                     echo "</tr>";

                     }

            } else {
                    echo "No results found";
                } echo "</table>"; 
            }

            ?>

当只显示更多结果时,这只是将一个结果返回到表中。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

删除if,因为它改变了数组的指针(fetch)

if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // get the first record, remove this if
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {// get the second record and reset $row

你可以改为:

$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
$total_rows = $stmt->rowCount();

if($total_rows > 0){

   foreach($row as $item){
      echo '<td>'. $item['title'] .'</td>';
   }
}else{
  echo 'no results';
}