0

我正在研究一个活动记录类,该类用于从可以包含连接的数据库中获取记录。

现在,在我的测试中,我有一些具有包含不同值的通用列名的数据,但是当我执行一个mysql_fetch_assoc函数时,它只会返回一个通用名称的列,并且可能会丢失剩余的数据。所以,我打算mysql_fetch_assoc用两个循环替换,第一个获取列名(使用mysql_fetch_column),第二个获取数据(通过两个循环,一个嵌套在另一个循环中,这将获取所有数据,然后将它放在一个返回的数组中),该数组将包含列名及其父表引用(或者如果JOIN具有AS语法)。

但我开始担心这可能效率不高,并且可能会花费大量处理时间,所以有人可以澄清这两种方法的效率,或者如果有这样的函数mysql_fetch_assoc会在列的表引用之前添加?

额外的

虽然这是使用 PHP 的 mysql 库,但我正在考虑将来将该库扩展为由 PDO 驱动,但我将使用与上述类似的方法(通过使用getColumnMeta

4

2 回答 2

2

真正问题的一个常见解决方案(不是您询问的 XY 问题)是为“常见”字段名称提供别名:

SELECT goods.id as gid, categories id as cid ...

等等

但是,如果您使用第二种方法mysql_fetch_field()(实际上是指)和mysql_fetch_row()

于 2013-04-30T13:53:46.433 回答
2

首先:标准“mysql_ 正在被删除,使用 mysqli_ 代替”警告。

第二:很难说没有看到你当前的代码,但就原始 sql 而言,你可以很简单地重命名列。所以如果你有 tableusers和 table contacts,你可以这样做:

select a.id, a.firstname as myfirstname, a.lastname as mylastname, 
    b.id, b.firstname, b.lastname 
from users a, contacts b 
where a.id=b.userid;
于 2013-04-30T13:52:23.583 回答