循环遍历array_values以获取记录

时间:2013-09-18 01:01:49

标签: php

 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我希望记录在表格中显示请帮助我实现这一点。

1 个答案:

答案 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

有更好的方法来实现你的目标,但这应该起作用。考虑同时查看mysqliPDO