2015-01-17 67 views
1

我想从MySQL中提取注册信息列表。我将查询更改为面向对象,当我这样做时,结果不会显示在表内。没有错误消息正在显示。使用MySQLi循环数据库结果

<?php 

        $sql  = "SELECT * FROM `prereg`"; 
        if (!$stmt = $mysqli->query("SELECT * FROM prereg")) { 
         echo "Query Failed!: (" . $mysqli->errno . ") ". $mysqli->error; 
        }else{ 

        while ($row = mysqli_fetch_assoc()) {         
      ?> 
       <tr> 
       <!-- <td> 
         <?php echo $row['UID']; ?> 
        </td> --> 
        <td> 
         <?php echo $row['Guradian']; ?> 
        </td> 
        <td> 
         <?php echo $row['Number']; ?> 
        </td> 
        <td> 
         <?php echo $row['Phone']; ?> 
        </td> 
        <td> 
         <?php echo $row['Name']; ?> 
        </td> 
       <!-- <td> 
         <?php echo $row['Address']; ?> 
        </td> --> 
        <td> 
         <?php echo $row['City']; ?> 
        </td> 
        <td> 
         <?php echo $row['State']; ?> 
        </td> 
       <!-- <td> 
         <?php echo $row['Zip']; ?> 
        </td> 
        <td> 
         <?php print $row['Make']; ?> 
        </td> 
        <td> 
         <?php print $row['Ms']; ?> 
        </td> --> 
        <td> 
         <?php print $row['Fuel']; ?> 
        </td> 
        <td> 
         <?php echo $row['Class1']; ?> 
        </td> 
        <td> 
         <?php print $row['Class2']; ?> 
        </td> 
        <td> 
         <?php print $row['Class3']; ?> 
        </td> 
       </tr> 
         <?php } } 
        $stmt->free(); ?> 

我在做什么错?我搜索和搜索,我找不到解决问题的任何东西。

修订:

<?php 
        $stmt = $mysqli->query("SELECT * FROM prereg"); 
        if($stmt->num_rows > 0): 
         while ($row = $stmt->fetch_assoc()):          
      ?> 
       <tr> 
       <!-- <td> 
         <?php echo $row['UID']; ?> 
        </td> --> 
        <td> 
         <?php echo $row['Guradian']; ?> 
        </td> 
        <td> 
         <?php echo $row['Number']; ?> 
        </td> 
        <td> 
         <?php echo $row['Phone']; ?> 
        </td> 
        <td> 
         <?php echo $row['Name']; ?> 
        </td> 
       <!-- <td> 
         <?php echo $row['Address']; ?> 
        </td> --> 
        <td> 
         <?php echo $row['City']; ?> 
        </td> 
        <td> 
         <?php echo $row['State']; ?> 
        </td> 
       <!-- <td> 
         <?php echo $row['Zip']; ?> 
        </td> 
        <td> 
         <?php print $row['Make']; ?> 
        </td> 
        <td> 
         <?php print $row['Ms']; ?> 
        </td> --> 
        <td> 
         <?php print $row['Fuel']; ?> 
        </td> 
        <td> 
         <?php echo $row['Class1']; ?> 
        </td> 
        <td> 
         <?php print $row['Class2']; ?> 
        </td> 
        <td> 
         <?php print $row['Class3']; ?> 
        </td> 
       </tr> 
         <?php endwhile; endif; ?> 
      </table> 

      <?php 
      $stmt = $mysqli->query("SELECT * FROM prereg"); 

      if($stmt->num_rows > 0): ?> 
       <table> 
      <?php while($row = $stmt->fetch_assoc()): ?> 
        <tr> 
        <?php foreach($row as $val): ?> 
         <td><?php echo $val; ?></td> 
        <?php endforeach; ?> 
        </tr> 
      <?php endwhile; ?> 
      </table> 
     <?php endif; ?> 
     </center> 

试图改造你提供我已经有表的代码,你给作品的代码,表我也仍然不会填充时。

回答

1

如果您使用的程序界面为mysqli_fetch_assoc(),则需要提供mysqli_result

while ($row = mysqli_fetch_assoc($stmt)) { 

如果你使用面向对象的接口,那么就用它作为其方法:

while($row = $stmt->fetch_assoc()) { 

修订:

<?php 
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name'); 
$stmt = $mysqli->query('SELECT * FROM prereg'); 
?> 

<?php if($stmt->num_rows > 0): ?> 
<table> 
    <?php while($row = $stmt->fetch_assoc()): ?> 
     <tr> 
     <?php foreach($row as $val): ?> 
      <td><?php echo $val; ?></td> 
     <?php endforeach; ?> 
     </tr> 
    <?php endwhile; ?> 
</table> 
<?php else :?> 
<p>Table empty</p> 
<?php endif; ?> 
+0

好吧,我做了改变。表格前应显示只显示表头。更改后显示标题和空白行。仍然没有数据结果。 – Edh

+0

@EdHamilton只是确保表格确实不是空的。 – Ghost

+0

返回所有内容。现在我只需要弄清楚如何在我创建的表中返回该结果。该查询返回的结果遍布整个地方。没有任何一个领域与另一个领域分离,并且它不适用于我目前需要的领域。 – Edh