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 );
4

2 に答える 2

5

mysql_query()オブジェクトではなくリソースを返すため、このエラーが発生しています。オブジェクトを取得するには、mysql 関数の 1 つを使用して行セットをオブジェクト (つまりmysql_fetch_object()) として取得する必要があります。ただし、次のように行セットを配列としてフェッチするためにobjectToArray使用できるため、関数は必要ありません。mysql_fetch_array

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

また、廃止された関数の使用について誰かがコメントすると確信していmysqlます。ただし、徹底的に調べるために、またはのいずれmysqliかを使用することを検討する必要がありますPDO

したがって、これを出力として取得しました:

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);
于 2012-07-02T14:28:02.300 に答える
0

コードの時点では、MySQL サーバーから結果を返していません。そのためには、mysql_query の結果を関数に渡す必要がありますmysql_fetch_*

あなたの使用のために、mysql_fetch_assoc($result);列/値の関連付けを保持することができます。

MySQLiと hadを使用していたmysqli_fetch_object()場合、以下を使用してオブジェクトを配列に変換したり、その逆を行うことができます。

次のことができます。

型キャスト:

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

また

$object = new stdClass();
$array = (array) $object;
于 2012-07-02T14:44:31.390 に答える