【问题标题】:selecting a particular field from a table?从表中选择特定字段?
【发布时间】:2009-09-23 10:16:49
【问题描述】:

我正在使用以下 SQL 查询:

Select * from table1 as t1, table2 as t2 where t1.id = t2.col

但我的问题是这两个表都有同名的字段place。 那么如何在我的 PHP 代码中从 table2 中选择名称为 place 的列? 我想使用下面的php代码

 while($row_records = mysql_fetch_array($result_records))
    {

            <?  echo $row_records['place']; ?>

     }

如何从特定表中获取字段?

【问题讨论】:

  • 零回答,零票!
  • @OP - 如果你没有信心/经验来回答别人的问题也没关系,但至少有礼貌地投票有用的回答并选择你认为的答案最有帮助的。目前,你只是在吸食……
  • @所有乐于助人的人:我很抱歉,因为我以前没有接受任何答案。那是因为我不知道如何接受它,我也不知道有什么办法可以。我刚刚发布了一个关于如何接受答案的新问题,我不接受答案,也不赞成。再次抱歉,谢谢。

标签: php sql resultset


【解决方案1】:

永远不要使用...

Select * from ...

...在生产环境中 - 始终明确指定要返回的列。

因此,您可以将 SQL 修改为:

Select t1.Place as T1Place, t2.Place as T2Place
  from table1 as t1, table2 as t2 where t1.id = t2.col

所以在您的 PHP 中,您将拥有:

 while($row_records = mysql_fetch_array($result_records))
 {

        <?  echo $row_records['T2Place']; ?>

 }

【讨论】:

  • 对于动态语言来说可能没那么重要;它对 COBOL 等语言非常重要,但建议仍然合理。假设表格被更改为添加 3 个额外字段:图片、影片剪辑和 PDF 文件。您的查询不使用它们中的任何一个,但您的代码现在支付了传输 3 个怪异(数兆字节)字段值的成本,只是为了忽略它们。这很有趣:用户现在抱怨您的应用程序的性能。如果你没有编写懒惰的 'SELECT *',你就不会遭受不得不回去修复你笨拙的懒惰代码的耻辱。
  • @Hop - 乔纳森解释了一个很好的理由;另一个是清晰度。但是,我真的对替代方案持开放态度......
  • 感谢我刚刚接受并支持的所有答案和 cmets。
【解决方案2】:

为什么不使用表别名和字段名。 例如,

    Select t1.place as t1_place, t2.place as t2_place 
      from table1 as t1, table2 as t2 where t1.id = t2.col

在您的 PHP 代码中,您可以使用

来选择它
while($row_records = mysql_fetch_array($result_records))
    {
    echo $row_records['t1_place']; 
    echo '<br />';
    echo $row_records['t2_place']; 
    }

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多