2017-10-18 96 views
-1

我很抱歉,如果这可能之前已经问过,或者这是不可能的,但这是我希望从一个使用MySQL的特定表。MySQL/PHP:返回两列作为关联数组作为key =>值对

说,我下表:

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

我想能够将两列propertyvalue取作为从MySQL关联数组,所以最后的结果将是:

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

只是为了提供上下文,这样的人不要误解我问什么:

我已经知道我可以d o一旦我从通用的SQL声明中返回结果,PHP将返回每行的列为key => value对。我只是想知道是否可以将一列的值作为键返回,并将第二个值作为从MySQL直接继续的PHP中每行的键的值。

+0

能否请您看看mysqli_fetch_array – Tarun

+0

当然,您可以编写代码,将转换设置这样的结果。 – Sammitch

+0

我知道如何在'PHP'中编写代码来完成这一步,一旦我从MySQL查询中得到结果。我只是想知道是否可以直接从SQL中完成。 –

回答

2

没有开箱即用的取模方式,它会给你一个像这样索引的数组(如何知道哪个是关键?如果有多于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); 

旁注:它看起来像你的标题为实体 - 属性值反模式。这带给你沿途的问题,所以考虑重新设计你的模式。看看这个资源,以了解更多: