这是我的代码:
$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(),但这不起作用。它也是一致的。始终省略相同的行。
想法?
答案 0 :(得分:1)
听起来你有多行包含相同的数据 - 这意味着$ticker
的值不止一次结束。在这种情况下,您将使用该键覆盖以前的数组条目。尝试$current[] = $name;
或$current[$counter] = $name;
以确保所有数组键都是唯一的。
答案 1 :(得分:0)
{* 1}}函数实际上已在PHP5.5中弃用,因此您可能需要考虑更改代码以使用PDO或MySQLi。
确保字段'Ticker'实际上是唯一的,否则值将被覆盖。此外,在运行此程序时,您是否收到任何内存耗尽错误?这可能是造成这种情况的原因之一。
mysql_*
返回什么?如果 48,173,则值会被覆盖。