【发布时间】:2012-02-25 17:53:47
【问题描述】:
我目前正在尝试使用 PHP 和 mysql 编写一个简单的 ORM。我希望 orm 类能够使用连接表。 所以这是我的问题,下面的代码显示了我如何将查询产生的数据映射到数组中。
public function execute_query($db_connection)
{
$query = '';
foreach($this->sql_query as $query_part)
$query .= $query_part;
$result = $db_connection->query($query);
while($row = $result->fetch_assoc())
{
array_push($this->m_Data, $row);
}
}
db_connection 是一个 mysqli 对象。 sql_query 包含所有不同的查询部分(例如 sql_query['join'] 等)。 m_Data 是包含从 db 读取的数据的数组。
我现在的具体问题是,当我在查询中使用连接语句时,此函数只会覆盖我的 m_Data 数组中具有相同名称的字段。此外,如果我不保存特定字段数据来自的表的名称,我以后将无法使用相同的连接语句更新表。
tl,博士。我不仅需要能够像这样保存表数据:m_Data{ 'field_name' => 'value' },而且还需要保存从中选择字段的表名。然后我可以像这样保存数据 m_Data{ 'table_name.field_name' => 'value' } 这使我以后能够生成查询以成功更新连接的表。
我似乎找不到任何有关如何获取我从结果中提取的每个字段的原始表名称的信息。
如果 mysqli 不可能,如果您指出我正确的方向,我将不胜感激。
额外的简短问题陈述: 我需要得到一个结果集并单独读取每一行。对于每一行,我需要为每个选定的字段提供以下信息:field_name、table_name、value。
这一定有一个简单的答案,但我似乎在寻找错误的关键字来找到解决方案。
我希望我写得足够好理解。
【问题讨论】:
-
我已经添加了一个答案,但是如果您要澄清是否打算保留每个表的列名,这可能会很有用 - 无论是从像 Propel 这样的构建过程,还是从查询 db 结构实时。
-
顺便说一句 - 我希望你这样做只是为了体验!但是,如果您正在为 PHP 编写新的 ORM,请记住其中有很多 - 确保您没有重新发明轮子 :)
-
是的,我这样做只是为了体验。我已经有一段时间没有使用 php 了,而且我从来没有在 OO 风格中使用过它。所以我目前正在构建一个简单的 MVC 框架和这个 ORM 来深入研究这个问题。因为我通过潜入一个项目并克服我面临的问题来学得最好。再次感谢您的帮助:)