2012-03-22 12 views
0

から登録しよ配列を取得:私は、次のコードを使用してDBから参加したクエリを引っ張ってるのMySQL

$query = 'SELECT `profiles`.`city`, `users`.`first_name`, `users`.`last_name`' 
     . ' FROM profiles, users' 
     . ' WHERE ((`profiles`.`user_id` = 3) AND (`users`.`user_id` = 3))' 
     . ' LIMIT 1'; 
    $result = $connection -> query($query); 

    $arr = $result -> fetch_array(); 

    $feedback = $arr; 

    $result -> close(); 
    return $feedback; 

これが私の最後のコードではありません、これは私の参加をテストするだけの予備です。

クエリは正常に動作するようですが、必要な情報の1行を取り出しますが、var_dumpとすると、配列は2つの異なるインデックス、数値インデックス、およびdbの名前のインデックスに配置されますフィールド。これが効果的に私のクエリ結果の大きさを倍増さ

array(6) { [0]=> string(4) "Reno" ["city"]=> string(4) "Reno" [1]=> string(4) "John" ["first_name"]=> string(4) "John" [2]=> string(3) "Doe" ["last_name"]=> string(3) "Doe" } 

:ここではvar_dumpは次のようになります。 1行の場合、これは大したことではありませんが、同じメソッドを使用して複数のレコードを描画する場合、結果のサイズを2倍にするとコストがかかることがあります。

私はforeachループを行うことを試みた:

foreach ($arr as $key=>$value) { 
    $feedback[$key] = $value; 
} 

が、それは同じ結果を私に残します。私は間違って何かをしていますか?もしそうなら、私はそれを訂正するか、これは正常ですか?あなたは

答えて

1

を助けるため

おかげでmysqli_result::fetch_array()のデフォルト結果の型は(http://php.net/manual/en/mysqli-result.fetch-array.phpを参照)を使用すると、両方の名前と数値結果の配列のインデックスを取得する意味MYSQLI_BOTHです。

fetch_assoc()を代わりに使用してください。

+0

のは、mysql_fetch_row($結果)で、オム---何を "デフォルトのMySQLは、フェッチモードを"? – zerkms

+0

恐ろしく!スーパー速い返信ありがとう!完璧に動作します。私はそれを許すとすぐにそれを受け入れるでしょう!私は 'fetch_array(MSQL_ASSOC)'に入れて動作します。 –

+0

@zerkms私はPDO(*フェッチモード*と呼ばれる)を好むことができますか? – Phil

0

サイズを小さくするには、mysql_fetch_arrayの2番目のオプションの引数を調べることをお勧めします。これは、ここに文書化されて:あなただけの数値-インデックスや連想配列をしたい場合は、指定することができます

http://www.php.net/manual/en/function.mysql-fetch-array.php

+0

FYI * MySQLi *、 – Phil

0

フェッチ行(http://www.php.net/manual/en/mysqli-result.fetch-row.php)を使用すると、名前なしでフェッチされます。私はこれがあなたが探しているものだと思いますよね?

EDIT:これはまた、MySQLへaplliedしますが、機能ではなく、mysqliの

+0

ありがとうございます。私は結果の '_ASSOC'部分を返すことを望みます - 私の価値がどこにあるのかをわかりやすくするでしょう。 –

関連する問題