2013-03-04 54 views
0

這裏是我的代碼:MySQL查詢不拉都行

$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所有48173行初始化爲PHP數組。

我已經做了這個更大的查詢之前。我不知道爲什麼這不起作用。它不會截斷數組的末尾,即省略45,651-48,173。這是隨機的。我已經使用TRIM(),這是行不通的。它也是一致的。相同的行總是被省略。

想法?

+4

可能重複的股票價值?試試'$ current [] = $ name;'並計算它。 – 2013-03-04 22:31:19

回答

1

聽起來像您有多行包含相同數據的行 - 這意味着$ticker的值不止一次相同。在這種情況下,您將使用該鍵覆蓋以前的數組條目。嘗試$current[] = $name;$current[$counter] = $name;以確保所有陣列密鑰都是唯一的。

+0

$ current [] = $ name返回48,173 我沒有重複在funds_backup – user2033337 2013-03-04 22:40:07

+0

證據似乎不同意。如果將鍵設置爲'$ ticker'值可以減少開始使用的項目數量,那麼該列中必須有重複值。 – 2013-03-04 22:44:10

+0

是的你是對的!我正在查看$ name的重複內容,但實際上有$ ticker的重複項,導致您的幫助覆蓋以前的$ ticker Thanx實例。 – user2033337 2013-03-04 23:12:56

0

mysql_*函數實際上在PHP5.5中已棄用,所以您可能需要考慮將代碼更改爲使用PDO或MySQLi。

確保字段'Ticker'實際上是唯一的,否則值將不斷被覆蓋。另外,你是否在運行時遇到任何內存耗盡的錯誤?這可能是導致這種情況的原因之一。

echo $counter;返回什麼?如果它 48,173那麼這些值將被覆蓋。