Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDOStatement::fetch()和重复的字段名_Php_Pdo - Fatal编程技术网

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

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`

我正在使用MySQL和PHP5.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\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
添加了一个替代方法。