2013-07-09 36 views
0

我正在編寫用於移動應用程序的Web服務。 Web服務使用支持類來執行查詢並將結果作爲JSON返回。我希望能夠簡單地將整個結果集作爲JSON返回,但「mysql_fetch_array」一次只返回一條記錄。此外,我不知道列名,所以手動生成JSON輸出可能會很棘手。PHP MySql - 返回列名未知的所有記錄

所以我想這是一個兩部分問題。在.NET中,有一個列集合,通過它可以獲取列名稱。在PHP中有這樣的東西嗎?而且,如何將整個結果集作爲JSON返回,而無需迭代集合並手動構建JSON。謝謝!薇薇

public static final function executeSelectQuery($qry){ 
     $connection = mysql_connect(ADS_DB_HOST, ADS_DB_USERNAME, ADS_DB_PASSWORD) or die(ADS_ERROR_MSG . mysql_error()); 
     $db = mysql_select_db(ADS_DB_NAME) or die(ADS_ERROR_MSG . mysql_error()); 
     $result = mysql_query($qry) or die(ADS_ERROR_MSG . mysql_error()); 
     mysql_close(); 

     while($rows = mysql_fetch_array(($result))){ 
      // how do I access column names? 
     } 
    } 
+2

不要使用已過時'mysql_ *'功能。 – Voitcus

+0

使用mysql_fetch_assoc爲每個行獲取一個關聯數組...然後您可以調用array_keys來獲得列名數組 – Orangepill

+1

*詳細說明:* mysql_ *函數將[在PHP 5.5中不推薦使用](http ://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated)。不建議編寫新代碼,因爲它將來會被刪除。相反,無論是[MySQLi](http://php.net/manual/en/book.mysqli.php)還是[PDO](http://php.net/manual/en/book.pdo.php)和[是一個更好的PHP開發人員](http://jason.pureconcepts.net/2012/08/better-php-developer/)。 –

回答

3
public static final function executeSelectQuery($qry){ 
    $connection = mysql_connect(ADS_DB_HOST, ADS_DB_USERNAME, ADS_DB_PASSWORD) or die(ADS_ERROR_MSG . mysql_error()); 
    $db = mysql_select_db(ADS_DB_NAME) or die(ADS_ERROR_MSG . mysql_error()); 
    $result = mysql_query($qry) or die(ADS_ERROR_MSG . mysql_error()); 
    mysql_close(); 
    $results = array(); 
    while($rows = mysql_fetch_assoc(($result))){ 
     $results[] = $rows; 
    } 
    return $results; 
} 

然後把它做成JSON

$json = json_encode(Classname::executeSelectQuery($qry)); 
+0

謝謝,解決了我的問題! – Pheepster

1

可以使用MYSQL_ASSOC選項(參見manual)獲取數組。在這種情況下,你的列名作爲數組的關鍵字,你可以檢索它們,例如。使用array_keys()函數。

+0

並隨後生成'json_encode'數組 – DevlshOne