0

これが私のコードです:

$counter = 0;
$result = mysql_query("select * from funds_backup");

echo mysql_num_rows($result)."</br>";   // <--this prints 48,173

while ($row = mysql_fetch_object($result)) {
    $counter++;
    $name = $row->Name;
    $ticker = $row->Ticker  ;
    $current[$ticker] = $name;
    echo $counter."  ".$current[$ticker]."</br>"; //<--this prints to 48,173

      }
echo count($current);   // <--this prints 45,650

mysql_fetch_object48,173 行すべてを php 配列に初期化できません。

以前に大きなクエリでこれを行ったことがあります。なぜこれが機能しないのかわかりません。配列の末尾は切り捨てられません。つまり、45,651 ~ 48,173 は省略されます。ランダムです。TRIM() を使用しましたが、これは機能しません。それもある意味で一貫しています。同じ行は常に省略されます。

アイデア?

4

2 に答える 2

1

同じデータを含む複数の行があるように聞こえます。つまり、の値は$ticker2回以上同じになります。この場合、前の配列エントリをそのキーで上書きします。$current[] = $name;または$current[$counter] = $name;、すべての配列キーが一意であることを確認してください。

于 2013-03-04T22:33:38.193 に答える
0

これらのmysql_*関数は実際にはPHP5.5で非推奨になっているため、代わりにPDOまたはMySQLiを使用するようにコードを変更することを検討してください。

フィールド「ティッカー」が実際に一意であることを確認してください。そうでない場合、値は上書きされ続けます。また、これを実行しているときにメモリ枯渇エラーが発生していますか?これが原因の1つかもしれません。

何がecho $counter;返されますか?48,173の場合、値は上書きされています

于 2013-03-04T22:33:57.083 に答える