2013-06-29 102 views
2
mysql_connect('localhost:3036', 'root', 'xxxx'); 

mysql_select_db('extractor'); 

$query = mysql_query("SELECT trackingno FROM xx where orderid='".$item->increment_id."'"); 

$compiledresults = mysql_fetch_array($query); 

foreach($compiledresults as $items){ 

echo $items."</br>"; 
} 

它總是隻返回兩個值。任何想法爲什麼?mysql只返回2個結果

+5

您確定有超過2個符合您指定條件的結果嗎? –

+2

我想你應該使用'while($ compiledresults = mysql_fetch_assoc($ query))'而不是從'mysql_fetch_assoc($ query)'得到第一個結果,因此[documentation](http://php.net/ manual/en/function.mysql-fetch-array.php)說_Returns一個數組,對應於獲取的行並將內部數據指針提前移動.. ..請注意_deprecation warning_紅色。 – dbf

+0

@dbf建議的循環更好,因爲如果結果是巨大的,一次枚舉它是一個巨大的內存用戶,而一次列舉一個是和平的。它也將爲您節省6-8周的調試 –

回答

1

只是修復您的代碼:

$query = mysql_query("SELECT trackingno FROM xx where orderid='".$item->increment_id."'"); 
if ($query){ 
    while ($data = mysql_fetch_assoc($query)){ 
    echo $data['trackingno'] ; 
    } 
} 

的原因,你得到2項是您用來mysql_fetch_array一次。這給你從數據庫中只有一行。數組中的第一個元素是數字索引的,另一個是字符串索引的。

所以你有:$compiledresults[0]$compiledresults['trackingno']其實。