代码没有 Return 行

Code Does Not Return Rows

我正在尝试将查询结果写入 html table。 sql 有效,但由于某些原因 table 仅显示 header 行。这应该 return 大约 15 行。语法有什么不正确的地方,我应该如何修改才能将数据写入 table?

    <?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 ) 只会产生 header 行,仍然没有数据被 returned.

编辑 2
这是$results正在returning

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

遍历 $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,class JDatabase returns 对象的一种方法,用于解析每一行。如您所见 here:

Method to get an array of the result set rows from the database query where each row is an object.

重用 "option" 似乎是个问题。 改变你的循环方式并不能解决这个问题。

使用其中的数据库参数或 foreach 行更改数组的名称。 "foreach $results as $result" 在循环内进行相应的更改会更聪明。

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