2017-10-04 59 views
-1

我有一個MySQL表,其中我跑左聯接的查詢:MySQL返回陣的鑰匙和Tabelle-名稱 - 刪除鍵

$db = $db->first("SELECT * FROM devices LEFT JOIN customer ON devices.customerid = customer.customerid WHERE devices.hash = '".$hash."' OR devices.deviceid = '".$hash."'"); 

使用此功能:

//Select Datenbankanfrage, erste Zeile 
function first($query, $restype=0) { 
    $this->querystring = $query; 

    if ($restype==1) $restype=MYSQLI_ASSOC; 
    else $restype=MYSQLI_BOTH; 

    $result = $this->query($query); //Query 
    if (!$result) return false; 

    $row = $result->fetch_array($restype); 
    $result->free(); 

    return $row; 
} 

但我收到一個array與鍵作爲迴應:

1 => Maxii 
Name => Maxii 
2 => Streetfromthe 
Street => Streetfromthe 

怎麼可以我禁用了鍵(1,2)或者我該如何在數組中刪除它?

這裏是從全陣列Nopaste返回: https://nopaste.xyz/?23ccf318bbfc93fb#Oes85/9Z8+Kookk2nTLmbtObjaL8mD2aitPPrHV3v9w=

+0

它看起來像鏈接到你的粘貼是不完整的。 –

+0

你傳遞給函數'first'的原因是第二個參數'$ restype'決定你是否應該獲取關聯數組或者是關聯數組和數字索引數組。對於這個論點,你可能看起來像是通過了別的不是1的東西。 – OptimusCrime

+0

謝謝,這是工作!哈哈。 Resttype = 1 – Burhan

回答

0

問題來自$ restype,您的第二個參數。它默認爲零,它將使用MYSQLI_BOTH,它通過索引和名稱返回字段。你一定要一個關聯數組(MYSQLI_ASSOC),傳遞$ restype爲1

,負責改變restype的線路有:

if ($restype==1) $restype=MYSQLI_ASSOC; 
    else $restype=MYSQLI_BOTH; 
+0

謝謝你的解釋! – Burhan

0

您需要$result->fetch_assoc

編輯以取代$result->fetch_array:在你的情況下,留下它在fetch_array並使用您的功能。 使用first($sql, 1);調用它

+0

我嘗試過,然後我成爲一個錯誤。 – Burhan

+0

@Burhan如果你發佈了錯誤消息,它會有幫助。 – OptimusCrime

+0

這是因爲這個別名,有第二個參數。將它保存在'fetch_array'處,但是將一個額外的參數傳遞給第一個函數,1);所以它只會只有ASSOC。正如你的代碼所述。更新回答 –