【问题标题】:mysql php selecting fields from 2 tables, with the same field names [duplicate]mysql php从2个表中选择字段,具有相同的字段名称[重复]
【发布时间】:2012-11-21 10:24:23
【问题描述】:

所以我有一个定制的 CMS,它允许动态创建表单和列表等。我注意到它抓取列表数据的问题,这与数据库中的批准表冲突。

问题是,如果有数据的表的字段名与approvals表中的字段名相同,那么当i mysql_fetch_array 并且它返回一个数组中的值时,它只会返回一个字段名

所以一个返回的例子

Array
(
    [id] => 1
)

理想情况下,我希望它返回

Array
(
    [approvals.id] => 1
    [affiliates.id] => 2
)

那么我怎样才能让它在结果数组的表名前加上前缀来抵消称为相同事物的字段名呢?我不想更改字段名称,因为它非常嵌入。

【问题讨论】:

  • 可以修改sql吗?

标签: php mysql prefix


【解决方案1】:

通常在 SQL 语句中使用别名:

SELECT table1.id as t1_id, table2.id as t2_id FROM .....

然后,当您进行获取时,您将以这种方式访问​​它:

echo $row['t1_id'];

【讨论】:

    【解决方案2】:

    使用mysql别名

    approvals 表 id 别名为 [id ASapprovals.id]

    affiliates 表 id 别名为 [id AS associates.id]

    【讨论】:

      【解决方案3】:

      在查询中使用别名:

      SELECT approvals.id AS approvals_id, affiliates.id AS affiliates_id ...
      

      关联数组将包含:

      echo $row['approvals_id'];
      

      【讨论】:

        【解决方案4】:

        问题是,如果包含数据的表具有相同的字段名称 作为批准表中的字段名称

        您必须为这些字段的名称使用不同的别名。比如:

        SELECT 
           approvals.id approvalsid,
           affiliates.id affiliatesid
            ...
        FROM
        ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-17
          • 2015-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多