我正在使用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();
Run Code Online (Sandbox Code Playgroud)
但我无法区分重复的字段名称,例如"标题".更糟糕的是,重复相互覆盖:
array('Title' => 'Frodo Baggins');
Run Code Online (Sandbox Code Playgroud)
在过去的糟糕时期,我跑到mysql_fetch_field()每个领域,为每个领域拿到桌子.请告诉我,有一种比添加字段(SELECT events.Title AS eventsTitle;)前缀更好的方法.
非常感谢您的帮助!
在查询中为它们提供别名,这样它们就不会重复:
SELECT events.Title AS eTitle, persons.Title AS pTitle FROM ...
Run Code Online (Sandbox Code Playgroud)
然后行将是:
array('eTitle' => 'Hobbit Meeting', 'pTitle' => 'Frodo Baggins');
Run Code Online (Sandbox Code Playgroud)
另一种方法是将结果作为索引数组而不是关联数据获取:
$test->fetch(PDO::FETCH_NUM);
Run Code Online (Sandbox Code Playgroud)
然后你会得到:
array('Hobbit Meeting', 'Frodo Baggins');
Run Code Online (Sandbox Code Playgroud)
你可以$row[0]和它们一起访问它们$row[1].