2017-10-18 68 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); 

旁註:它看起來像你的標題爲實體 - 屬性值反模式。這帶給你沿途的問題,所以考慮重新設計你的模式。看看這個資源,以瞭解更多: