我正在尝试将查询结果写入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 ) )
答案 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行更改数组的名称。 你是对的,似乎错误的是它不能像你做的那样工作,除了你的名字是相同的,所以它们可能导致问题