我正在处理一个活动记录类,用于从可以包含联接的数据库中获取记录。
现在,在我的测试中,我有一些具有包含不同值的常用列名的数据,但是当我执行mysql_fetch_assoc
函数时,它只返回一个公共名称的列,并且可以松散剩下的数据。所以,我打算用两个循环替换mysql_fetch_assoc
,第一个用来获取列名(使用mysql_fetch_column
),第二个用于获取数据(通过有两个循环,一个嵌套在另外,它将获取所有数据,然后将它们放在一个返回的数组中,该数组将包含列名及其父表引用(或者如果JOIN
具有AS
语法)。
但是我担心这可能效率不高,并且可能花费相当多的处理时间,所以有人可以澄清两种方法的效率,或者是否有像mysql_fetch_assoc
这样的函数会先于列的表引用?
其他
虽然这是使用PHP的mysql库,但我正在考虑将来扩展库以通过PDO驱动,但我将使用与上面类似的方法(通过使用getColumnMeta
)
答案 0 :(得分:2)
首先关闭:标准“mysql_正被删除,请改用mysqli_”警告。
第二:很难说没有看到你当前的代码,但就原始sql而言,你可以简单地重命名列。因此,如果您有表users
和表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;
答案 1 :(得分:2)
真实问题的常见解决方案(不是您提出的XY问题)是为“常用”字段名称提供别名:
SELECT goods.id as gid, categories id as cid ...
等等
但是,如果您使用第二种方法mysql_fetch_field()
(实际上是指您的意思)和mysql_fetch_row()