1

この関数から奇妙な動作が発生しています。

入力

    public function fetch_array($result_set) 
{
        $rows = array();
        while ($row = mysql_fetch_array($result_set)) 
        {
            $rows[] = $row;
            print_r($row);
            break;
        }
        return $rows;

}

関数を一度実行しましたが、MySQL クエリ結果から行を複製しています。

出力

Array ( [0] => Sarah [first_name] => Sarah [1] => Palin [second_name] => Palin ) 

そのはず

正しい出力

Array ( [first_name] => Sarah [second_name] => Palin ) 

このSO質問の例を使用しました

while() の代わりに foreach() で mysql_fetch_array() を使用する

私のクエリまたはMysqlの結果エラーではありません

http://i.imgur.com/CZnIF.png

ここに画像の説明を入力


ここで何がうまくいかないのですか?

4

6 に答える 6

4

これはエラーではなく、 http: mysql_fetch_array() //us.php.net/manual/en/function.mysql-fetch-array.phpの意図した動作です。

result_typeフラグを設定するか、mysql_fetch_assoc()代わりに使用することができます。http://us.php.net/manual/en/function.mysql-fetch-assoc.php

于 2012-10-16T19:22:03.277 に答える
2

mysql_fetch_array を使用する場合、MYSQL_ASSOC フラグをフィードします。

編集:適切な変更を加えたコードは次のとおりです

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC)) 

また、MYSQL_NUM を入力することで、数値インデックスだけでそれらを取得できます。

于 2012-10-16T19:20:31.740 に答える
1

1 つの結果が得られ、もう 1 つの結果が必要な理由は、新しい配列 ($rows) 内に配列 ($row) をプッシュしているためです。配列(使用する括弧)に何かをプッシュすると、自動インクリメントキーが得られます。

于 2012-10-16T19:21:46.880 に答える
1

これを試して:

$rows['name'] = $row['name'];
$rows['second_name] = $row['second_name'];

...

それ以外の

$rows[] = $row;
于 2012-10-16T19:22:12.133 に答える
1

デフォルトでmysql_fetch_arrayは、データベース列ごとに 2 つのキーがあります。1 つは数値キーで、もう 1 つは連想キーです。これを行うと、数値キーのみをフェッチするように指示できます。

mysql_fetch_array($result, MYSQL_NUM);

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

于 2012-10-16T19:24:56.487 に答える
1

これは完全に正常であり、予期される動作です。連想配列だけが必要な場合は、使用します

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC)) 
于 2012-10-16T19:25:41.650 に答える