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_object将所有 48,173 行初始化为 php 数组。

我以前用更大的查询做过这个。我不知道为什么这不起作用。它不会截断数组的末尾,即省略 45,651-48,173。这是随机的。我使用了 TRIM() 但这不起作用。它在某种程度上也是一致的。始终省略相同的行。

想法?

4

2 回答 2

1

听起来您有多行包含相同的数据 - 这意味着 的值$ticker不止一次地以相同的方式结束。在这种情况下,您将使用该键覆盖先前的数组条目。尝试$current[] = $name;$current[$counter] = $name;确保所有数组键都是唯一的。

于 2013-03-04T22:33:38.193 回答
0

这些mysql_*函数在 PHP5.5 中实际上已被弃用,因此您可能需要考虑将代码更改为使用 PDO 或 MySQLi。

确保字段 'Ticker' 实际上是唯一的,否则值将不断被覆盖。另外,您在运行此程序时是否遇到任何内存耗尽错误?这可能是造成这种情况的原因之一。

返回什么echo $counter;?如果48,173,那么这些值将被覆盖。

于 2013-03-04T22:33:57.083 回答