public function Read($Table, $Fields, $Where, $OrderBy, $Limit) {
if ($this->TableExists($Table)) {
$Query = "SELECT " . $Fields . " FROM " . "$Table";
if ($Where != "") {
$Query .= " WHERE " . $Where;
}
if ($OrderBy != "") {
$Query .= " ORDER BY" . $OrderBy;
}
if ($Limit != "") {
$Query .= " LIMIT " . $Limit;
}
$Result = mysql_query($Query);
$Records = mysql_fetch_assoc($Result);
//Extracting the field names
$Keys = array_keys($Records);
$this->Keys = $Keys;
//Extracting recordset
while($Values = array_values($Records)){
$this->Values = $Values;
}
return $this->Values;
return $this->Keys;
}
else {
echo "This table doesn't exists!";
}
} // End Read();
?>
<table>
<tr>
<?php
foreach ($Object->Keys as $Key) {
?>
<th><?php echo $Key; ?></th>
<?php
}
?>
</tr>
// Here i want the database record to be displayed.
</table>
实际上我正在尝试创建一个通用类来获取结果。目标是让php代码免于html元素。我已成功完成显示array_keys。 我在循环中犯了一些错误我认为显示array_values我希望记录在表格中显示请帮助我实现这一点。
答案 0 :(得分:0)
你要覆盖$ this-&gt;重复循环的每次迭代,尝试:
$this->Values = array();
while($Records && $Values = array_values($Records)){
$this->Values[] = $Values;
$Records = mysql_fetch_assoc($Result);
}
每次调用结果集时, mysql_fetch_assoc()
都会从结果集中拉出一个关联数组,直到没有剩下的行为止,因此迭代while($Records && ...
的想法意味着它将继续循环,获取行并将它们放入到$this->Values
,直到$Results
为假。
和
<table>
<tr>
<?php foreach ($Object->Keys as $Key) { ?>
<th><?php echo $Key; ?></th>
<?php } ?>
</tr>
<?php foreach ($Object->Values as $Values) { ?>
<tr>
<?php foreach ($Values as $Value) { ?>
<td><?php echo $Value; ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
这只是你正在做的事情的扩展,除了因为$this->Values
是一个数组,你需要迭代它,然后是每个值中的数组。这是一个2D array。
有更好的方法来实现你的目标,但这应该起作用。考虑同时查看mysqli
或PDO
。