[英]MySQL/PHP: return two columns as an associative array as key => value pairs
如果之前可能有人问过这个问题,或者这甚至不可能,我深表歉意,但这是我希望从使用 MySQL 的特定表中获得的内容。
说,我有下表:
+-------------+------------------+
| property | value |
+-------------+------------------+
| style | unisex |
| color | blue |
| type | small |
+-------------+------------------+
我希望能够从MySQL
获取两列property
和value
作为关联数组,因此最终结果将是:
array(
'style' => 'unisex',
'color' => 'blue',
'type' => 'small',
);
只是为了提供上下文,以便人们不会误解我的要求:
一旦我从通用SQL
语句返回结果,我就知道如何使用 PHP 执行此操作,该语句会将每行的列作为key => value
对返回。 我只是想知道是否有可能将一列的值作为键返回,将第二个值作为键的值直接从MySQL
到每一行的键,以便在PHP
继续。
没有开箱即用的获取模式可以为您提供一个这样索引的数组(它如何知道哪个是键?如果有超过 2 列怎么办?)。
您可以使用PDO::FETCH_NUM
和array_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
的数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.