2012-07-02 67 views
0

我需要獲取一個對象$ resultInput來查看數組(如$ resultInput註釋掉)。但是,當我使用函數對象數組時,我得到一個錯誤資源ID#5。什麼是問題?對象到數組

require('dbc.php'); 

mysql_select_db($db); 
$resultInput = mysql_query("SHOW COLUMNS FROM about WHERE Field NOT IN ('id', 'created', 'date_modified', 'last_modified', 'update', 'type', 'bodytext') AND Field NOT REGEXP '_image'"); // selects only the columns I want 

//$resultInput = array('page_header', 'sub_header', 'content', 'content_short'); 

function objectToArray($object){ 
    if(!is_object($object) && !is_array($object)){ 
     return $object; 
    } 
    if(is_object($object)){ 
     $object = get_object_vars($object); 
    } 
    return array_map('objectToArray', $object); 
} 

// convert object to array 
$array = objectToArray($resultInput); 

//show the array 
print_r($array); 
+1

你檢查過手動HTTP://php.net/manual/en/function。 mysql-query.php – xdazz

+0

最好不要使用mysql_ *。 mysql_ *已被棄用。改用MySQLi或PDO。 http://php.net/mysql_connect – Sherlock

回答

5

因爲mysql_query()返回的資源,而不是一個對象,您收到此錯誤。要獲取對象,您需要使用其中一個mysql函數來檢索行集作爲對象(即mysql_fetch_object())。不過,你不需要objectToArray功能,你可以使用mysql_fetch_array來獲取行集作爲一個數組,像這樣:

$result = mysql_query("..."); 
$resultInput = mysql_fetch_array($result); 

而且,我敢肯定有人會如何使用現在不推薦評論mysql功能。但是,爲了徹底,你應該考慮使用mysqliPDO

所以你得到這個作爲輸出:

array(12) { 
    [0] = > string(11)"page_header" 
     ["Field"] = > string(11)"page_header" 
    [1] = > string(11)"varchar(50)" 
     ["Type"] = > string(11)"varchar(50)" 
    [2] = > string(3)"YES" 
     ["Null"] = > string(3)"YES" 
    [3] = > string(0)"" 
     ["Key"] = > string(0)"" 
    [4] = > NULL 
     ["Default"] = > NULL 
    [5] = > string(0)"" 
     ["Extra"] = > string(0)"" 
} 

這是描述page_header列。要顯示所有列的列名,你應該這樣做:

$result = mysql_query("..."); $columns = array(); 
while($row = mysql_fetch_array($result) { 
    $columns[] = $row['Field']; 
} 

var_dump($columns); 
+0

我不想獲取行集我想獲得在SHOW COLUMNS中定義的列名。我知道的是mysql_fetch_assoc – Alex

+0

...列名將在行集中返回。做'var_dump($ resultInput);'你會看到他們... – nickb

+0

有趣...原諒我,因爲我是新手。但是,如何得到列的名字而不是數組:array(12){[0] => string(11)「page_header」[「Field」] => string(11)「page_header」[ 1] => string(11)「varchar(50)」[「Type」] => string(11)「varchar(50)」[2] => string(3)「YES」[「Null」] =>字符串(3)「YES」[3] =>字符串(0)「」[「Key」] =>字符串(0)「」[4] => NULL [「Default」] => NULL [5] =>字符串(0)「」[「Extra」] =>字符串(0)「」}我不需要所有這些varchar和密鑰信息 – Alex

0

從你的代碼現在開始,你並沒有從MySQL服務器返回結果。爲此,您需要將mysql_query結果傳遞給mysql_fetch_*函數。

爲了您的使用,您可以做mysql_fetch_assoc($result);,它將保留列/值關聯。

現在,如果您使用的是MySQLi並且具有mysqli_fetch_object(),則可以使用下面的方法將對象轉換爲數組,反之亦然。

你可以做到以下幾點:

鑄字:

$array = new array(); 
$object = (object) $array; 

$object = new stdClass(); 
$array = (array) $object;