2016-01-04 171 views
0

我在mySQL數據庫和一個數組上運行了一段時間/ foreach來檢查它是否存在。它應該循環170次,但循環超過12000次。這是爲什麼?爲什麼我的行在循環170次時循環12000次?

$my_rows = array(); 
while($row = mysql_fetch_assoc($run_query)){ 

    $my_rows[] = $row; 
    foreach($my_rows as $row){ 
     if(in_array_r($row['name'], $products)){ 
      echo "Exists"; 
     } else { 
      echo "Does not exist"; 
     } 
    } 
} 
+0

去除孔的foreach,每個'while' $ my_rows每一次成長和'foreach'運行 –

+0

哈!謝謝:)如果你添加一個答案,我會很樂意接受它! – user1996496

+0

請[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[編寫]​​(http://en.wikipedia.org/ wiki/Prepared_statement)語句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –

回答

2
$my_rows = array(); 

while($row = mysql_fetch_assoc($run_query)){ 

    $my_rows[] = $row; 

    if(in_array_r($row['name'], $products)){ 

     echo "Exists"; 

    } else { 

     echo "Does not exist"; 

    } 

} 
+0

爲什麼OP應該這樣做?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

3

這裏應該發生的事情是,你指定的mysql_fetch_assoc$my_rows,然後循環的結果超過$my_rows內容。一個循環。其中一個循環不需要存在。

$my_rows = mysql_fetch_assoc(...); 
foreach($my_rows as $row){ ...do stuff here... } 
相關問題