PDOStatement :: fetch()和重复的字段名称

时间:2014-01-12 04:33:12

标签: php pdo

我正在使用MySQL和PHP 5.3.8开发Web应用程序。我们有一种机制可以将简化的查询指令转换为完整的查询字符串,包括连接。

由于我无法知道哪些(规范化的)表将被连接以及它们的字段被调用,因此可能存在重复的字段名称。执行PDOStatement::fetch(PDO::FETCH_ASSOC)时,我得到一个关联的字段名称数组:

$test = $this->DBConnection->prepare("SELECT `events`.`Title`, `persons`.`Title` FROM `events` JOIN `persons` ON `events`.`HostID` = `persons`.`ID`;");
$test->execute();
$test->fetch();

但是我无法区分重复的字段名称,例如“title”。更糟糕的是,重复相互覆盖:

array('Title' => 'Frodo Baggins');

在过去的糟糕时期,我在每个字段上运行mysql_fetch_field()以获取每个字段的表格。请告诉我,比字段前缀(SELECT events.Title AS eventsTitle;)更好。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

在查询中为它们提供别名,这样它们就不会重复:

SELECT events.Title AS eTitle, persons.Title AS pTitle FROM ...

然后该行将是:

array('eTitle' => 'Hobbit Meeting', 'pTitle' => 'Frodo Baggins');

另一种方法是将结果作为索引数组而不是关联数据获取:

$test->fetch(PDO::FETCH_NUM);

然后你会得到:

array('Hobbit Meeting', 'Frodo Baggins');

您可以$row[0]$row[1]访问它们。