我正在使用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;
)更好。
非常感谢您的帮助!
答案 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]
访问它们。