【发布时间】:2011-06-25 14:30:54
【问题描述】:
这是我在 StackOverflow 上的第一个问题,坦率地说,我对 PHP 还很陌生。只是给你一个简短的提醒;)
我正在构建一个基于 OOP 的网站,采用 3 层架构。在我的数据抽象层中,我有一个名为 DbAdapter 的对象,它包含与数据库通信所需的所有函数。这些函数之一是下面的函数:read($sql),它接受一个 SQL 查询并将结果存储在一个二维数组中。
为此,它使用两个嵌套的 for 循环(一个用于行,一个用于每行的列)。虽然迭代器 $i 像往常一样递增,但不知何故,数组的最后一个元素被覆盖了。
我完全不知道这怎么可能,所以我犯的错误一定非常愚蠢。
有人愿意帮助新手吗?
提前致谢,山姆
public $loadedRows;
public function read($sql)
{
if ($this->connect())
{
$result = mysql_query($sql);
if ($result)
{
$totalRows = mysql_num_rows($result);
$totalFields = mysql_num_fields($result);
for ($i = 0; $i < $totalRows; $i++)
{
for ($j = 0; $j < $totalFields; $j++)
{
$fieldName = mysql_field_name($result, $j);
$loadedFields["$fieldName"] = mysql_result($result, $i, $fieldName);
}
$this->loadedRows[i] = $loadedFields;
}
$this->closeConnection();
return $this->loadedRows;
}
}
}
【问题讨论】:
-
查看以下函数:au.php.net/manual/en/function.mysql-fetch-array.php 这是一个内置函数,可以执行您正在执行的操作。 :)
-
人们应该真正开始欣赏 PDO。一点点
PDOStatement->fetchAll废止你的整个代码。
标签: php multidimensional-array for-loop 3-tier