繁体   English   中英

MySQL/PHP:将两列作为关联数组作为键 => 值对返回

[英]MySQL/PHP: return two columns as an associative array as key => value pairs

如果之前可能有人问过这个问题,或者这甚至不可能,我深表歉意,但这是我希望从使用 MySQL 的特定表中获得的内容。

说,我有下表:

+-------------+------------------+
| property    | value            |
+-------------+------------------+
| style       | unisex           |
| color       | blue             |
| type        | small            |
+-------------+------------------+

我希望能够从MySQL获取两列propertyvalue作为关联数组,因此最终结果将是:

array(
    'style' => 'unisex',
    'color' => 'blue',
    'type'  => 'small',
);

只是为了提供上下文,以便人们不会误解我的要求:

一旦我从通用SQL语句返回结果,我就知道如何使用 PHP 执行此操作,该语句会将每行的列作为key => value对返回。 我只是想知道是否有可能将一列的值作为键返回,将第二个值作为键的值直接从MySQL到每一行的键,以便在PHP继续。

没有开箱即用的获取模式可以为您提供一个这样索引的数组(它如何知道哪个是键?如果有超过 2 列怎么办?)。

您可以使用PDO::FETCH_NUMarray_map()构建一个新数组,使用第一列作为键,第二列作为值:

<?php
$query = $db->prepare("SELECT property, value FROM table");
$query->execute();
$row = $query->fetchAll(PDO::FETCH_NUM);
$rowFormatted = array_map(function ($el) {
    return [$el[0] => $el[1]];
}, $row);
var_dump($rowFormatted);

旁注:看起来您正在进入实体-属性-值反模式。 将使你的问题沿路,所以考虑重新设计架构。 查看此资源以了解更多信息:

老问题,但我想我至少会提供一个仅限 MySQL 的解决方案,因为这是要求的:

$stmt = $db->prepare('SELECT `property`, `value` FROM `table` WHERE 1');
$stmt->execute();

$results = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);

$results将按照您的预期进行格式化 - 一个以property为键、以value的数组。

资源: https : //www.php.net/manual/en/pdo.constants.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM