Php PDOStatement::fetch()和重复的字段名
我正在使用MySQL和PHP5.3.8开发一个web应用程序。我们有一种机制可以将简化的查询指令转换为完整的查询字符串,包括连接 由于我不知道将连接哪些(规范化的)表以及它们的字段被调用,因此可能存在重复的字段名。执行Php PDOStatement::fetch()和重复的字段名,php,pdo,Php,Pdo,我正在使用MySQL和PHP5.3.8开发一个web应用程序。我们有一种机制可以将简化的查询指令转换为完整的查询字符串,包括连接 由于我不知道将连接哪些(规范化的)表以及它们的字段被调用,因此可能存在重复的字段名。执行PDOStatement::fetch(PDO::fetch_ASSOC)时,我会得到一个字段名的关联数组: $test = $this->DBConnection->prepare("SELECT `events`.`Title`, `persons`.`Title`
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\u fetch\u field()
,以获取每个字段的表。请告诉我有比在字段前面加前缀更好的方法(SELECT events.Title AS eventsTitle;
)
非常感谢你的帮助 在查询中为它们指定别名,这样它们就不会重复:
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]
访问它们,您可以像使用MySQL一样对它们进行分组,但根据您向数据库添加数据的方式,它可能会禁止很多数据或允许所有数据,因为该字段可能并不重要看了之后。。没用那跟这个问题有什么关系?是的,当我看到你没有答案的“答案”时,我才意识到这个问题真正在问什么。谢谢。这是唯一的方法吗?使用PDO::FETCH_NUM
添加了一个替代方法。