代码不返回行

时间:2017-02-28 18:59:25

标签: php html joomla html-table joomla3.0

我正在尝试将查询结果写入html表。 sql是有效的,但由于某种原因,表只显示标题行。这应该返回大约15行。什么是不正确的语法,我应该如何修改,以便将数据写入表?

    <?php

    header('Access-Control-Allow-Origin: *');
    $option = array(); //prevent problems

    $option['driver']   = 'mssql';            
    $option['host']     = 'XXX.XXX.XX.XX';    
    $option['user']     = 'user';       
    $option['password'] = 'pass';   
    $option['database'] = 'database';      
    $option['prefix']   = '';             

    $db = JDatabase::getInstance( $option );
    $result = $db->getQuery(true);
    $result->select($db->quoteName(array('Host', 'Location', 'NumberOfPlayersAttending', 'NumberOfPlayersCompeting')));
    $result->from($db->quoteName('[EventInfo')); 
    $db->setQuery($result); 
    $results = $db->loadObjectList();
?>

<table border="1">
    <thead>
        <tr>
            <th>Host</th>
            <th>Location</th>
            <th>NumberOfPlayersAttending</th>
            <th>NumberOfPlayersCompeting</th>
        </tr>
    </thead>
    <tbody>
        <?php
            foreach( $options as $option ) 
            { 
        ?>
            <tr>
                <td><?php print_r($option['Host']); ?></td>
                <td><?php print_r($option['Location']); ?> </td>
                <td><?php print_r($option['NumberOfPlayersAttending']); ?></td>
                <td><?php print_r($option['NumberOfPlayersCompeting']); ?></td>
            </tr>
        <?php 
            } 
        ?>
    </tbody>
  </table>

修改
同样将语法改为foreach( $results as $option )只会产生一个标题行,但仍然没有返回数据。

编辑2
这是$results正在返回的数据

Array ( [0] => stdClass Object ( [Host] => Red Robin [Location] => Omaha, Neb [NumberOfPlayersAttending] => 25 [NumberOfPlayersCompeting] => 13 ) )

2 个答案:

答案 0 :(得分:2)

遍历$results而不是$options,因为这是包含查询输出的变量。

<强>更新

HTML也不会为每个结果打印新行。

修复代码,使用对象操作符访问查询结果,因为这是返回的内容:

   <table border="1">
    <thead>
        <tr>
            <th>Host</th>
            <th>Location</th>
            <th>NumberOfPlayersAttending</th>
            <th>NumberOfPlayersCompeting</th>
        </tr>
    </thead>
    <tbody>
        <?php
            foreach( $results as $option ) { 
              print "<tr>";
              print "<td>".$option->Host."</td>";
              print "<td>".$option->Location."</td>";
              print "<td>".$option->NumberOfPlayersAttending."</td>";
              print "<td>".$option->NumberOfPlayersCompeting."</td>";
              print "</tr>";
            } 
            ?>
    </tbody>
  </table>

loadObjectList,类JDatabase的方法返回解析的每一行的对象。正如您所见here

  

从数据库查询中获取结果集行数组的方法   每行都是一个对象。

答案 1 :(得分:0)

重用“选项”似乎可能是一个问题。 以你的方式改变你的循环并没有解决这个问题。

使用数据库参数或foreach行更改数组的名称。

你是对的,似乎错误的是它不能像你做的那样工作,除了你的名字是相同的,所以它们可能导致问题