在SQL查询中使用表名时如何访问PDO结果?

时间:2017-01-18 18:36:30

标签: php sqlite pdo

我最近不得不更改SQL查询以查询多个表,并开始使用列名指定表名。

$results = $db->query('SELECT categories.name, channels.description, channels.name FROM categories JOIN channels ON categories.id = channels.category ORDER BY RANDOM() LIMIT 4');

但是现在我遇到了一个问题,即使我更新它以使用带有列名的表名,其余代码也不起作用。

<h3><?php echo $row['channels.name']; ?></h3>

如何以这种方式指定包含列名的表名? SQL查询本身很好,但我不明白如何echo结果?

2 个答案:

答案 0 :(得分:1)

表名不太可能传递到输出。而是使用别名更改其中一个列的名称,例如:

$results = $db->query('SELECT categories.name as cat_name, channels.description, channels.name FROM categories JOIN channels ON categories.id = channels.category ORDER BY RANDOM() LIMIT 4');

然后在引用列时,请参考

<h3><?php echo $row['name']; ?></h3>
<h3><?php echo $row['cat_name']; ?></h3>

等等。

答案 1 :(得分:0)

documentation说:

  

结果列的名称是&#34; AS&#34;的值。如果存在AS子句,则该列的子句。如果没有AS子句,那么列的名称是未指定的,可能会从SQLite的一个版本更改为下一个。

因此,如果您想按名称访问结果列,则必须使用AS。