2015-05-19 145 views
0

我的MySQL表「軌道」有這兩個領域:MySQL查詢返回不正確的結果

Id (Int) 
Name (Varchar 255) 

的值是:

1 Day 1 
2 Day 2 
3 Day 3 

我試圖使用從PHP檢索所有曲目此功能:

function getTracks() { 
    $query = sprintf('select * from tracks'); 
    return contentRetrieverDataBaseQuery($query)->fetchAssoc(); 
} 

function contentRetrieverDataBaseQuery($query) { 
    $settings = contentRetrieverGetSettings(); 
    Database::addConnectionInfo('contentRetriever', 'default', $settings['database_connection']); 
    db_set_active('contentRetriever'); 
    $result = db_query($query); 
    db_set_active(); 
    return $result; 
} 

對phpmyadmin運行select * from event_tracks我得到的結果是否正確。

當我這樣做:

$tracks = getTracks(); 
foreach ($tracks as $track) { 
    echo $track['name']; 
} 

我得到作爲輸出「1D」,這是標識和名稱的第一個字母。

我在做什麼錯?

編輯:更正數據庫

+0

無處裏面你'contentRetrieveDataBaseQuery'你定義'$ result' ... –

+0

@MarcB'$結果= db_query($查詢);' – Keelan

+0

@camil:提醒我去看看我的驗光師...... –

回答

1

->fetchAssoc()的名字總是返回查詢結果單排,也就是說你的陣列是一個單一的記錄,你的循環將投入該行的字符串值到$track。然後,使用$track,如果它是一個數組,產生下面的代碼相當於:

$arr = array('abc', 'def'); // your one row of query results. 
foreach($arr as $value) { 
    // $value is now 'abc'; 
    echo $value['name']; // parsed/executed as $value[0]; 
    // output is 'a' 
} 

字符串可以作爲一個字符數組,這就是爲什麼PHP沒有抱怨$tracks['name']處理。它只是簡單地將['name']視爲使用非數字數組索引的愚蠢嘗試,並將其轉換爲0