【问题标题】:PHP Select multiple tables as arrayPHP选择多个表作为数组
【发布时间】:2017-11-11 06:46:26
【问题描述】:

我有多个带有软件选项的表,我想在一个请求中请求它们(数据库 postgress,php pdo)并像下面的示例一样返回它。

--- table userStatus ---
-- id --     -- name --
    1         loggedIn
    2         loggedOut

--- table customerStatus ---
-- id --     -- name --
    1         active
    2         nonActive

响应格式应如下:

O => 
  userStatus=>
    1 = loggedIn,
    2 = loggedOut
  customerStatus =>
    1 = active,
    2 = nonActive

尝试了不同的 fetch 方法,但这个解决方案没有任何结果。最后,我现在完成了 20 个请求并手动合并它们:)

【问题讨论】:

  • 可以尝试使用多查询multi statementmulti-query
  • Ty 将尝试在 pdo 中找到等价物。是否可以将 select 的结果存储为数组,第一列是索引?
  • @Doomenik 你必须在 php 端做一些事情来管理数组
  • @AhmedGinani 我只是认为选择一个表作为数组没有问题
  • @Doomenik 我想你在找 $q->fetchAll(PDO::FETCH_KEY_PAIR); stackoverflow.com/questions/1387563/…

标签: php mysql postgresql pdo


【解决方案1】:

使用多重查询下面是一个简单的例子:

$query  = "SELECT * from userStatus;";
$query .= "SELECT * from customerStatus";

/* execute multi query */
if (mysqli_multi_query($link, $query)) {
    do {
        /* store first result set */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_row($result)) {
                printf("%s\n", $row[0]);
            }
            mysqli_free_result($result);
        }
        /* print divider */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));
}

如果您想将第一列作为键,您可以使用 pdo 来实现,请查看 PHP PDOStatement: Fetch A Row, as the First Column as the Key of an Array

【讨论】:

  • 会试一试。谢谢。
【解决方案2】:

执行单个 UNION 查询。

SELECT * FROM userStatus
UNION ALL
SELECT * FROM customerStatus

行将合并到一个结果集中。

【讨论】:

  • 这行不通,不是所有的表都有相同数量的列,它仍然会将它们作为多个行集返回,而不是按表组合。
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多