有没有办法在PHP MySQL PDO中通过表名索引数组

时间:2018-02-13 21:00:10

标签: php mysql pdo

我正在使用PHP与MySQL PDO,所以我的目标是同时从多个表中进行选择,问题是那些表包含一些相同的字段名称(如status,user_id,deleted等)。

那么,有没有办法在像cakePHP中的表名索引的数组中得到结果:

//--SQL Query
$db->query('Select users.id, users.name, users.status, users.deleted, 
books.id, books.name, books.status, books.deleted where 
users.id=books.user_id AND user.id=1');

//--result I need
array (
  ['users']=>array(
    'id'=>1,
    ['name']=>'test',
    ['status']=>'active',
    ['deleted']=>0
  ),
  ['books']=>array(
    ['id']=>2,
    ['user_id']=>1,
    ['name']=>'Lost Word',
    ['status']=>'pending',
    ['deleted']=>0
  )
)

1 个答案:

答案 0 :(得分:0)

PDO没有为您执行此操作的任何功能。您必须编写代码来处理PDO返回的行。

但是您必须知道哪个列来自哪个表。即使PDOStatement::getColumnMeta()也没有为每列返回原始表,因为有时候选择列表中的表达式并不对应于任何单个表。

例如,您如何安排此查询的结果?

SELECT users.deleted + books.deleted AS `either_deleted`
FROM users JOIN books ON users.id=books.user_id