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

4

1 回答 1

0

您正在覆盖 $this->Values 循环的每次迭代,请尝试:

$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是一个数组,您需要迭代它,然后是每个值内的数组。这是一个二维数组

有更好的方法可以实现您的目标,但这应该起作用。考虑寻找mysqliPDO太。

于 2013-09-18T01:07:39.773 回答