2013-03-22 67 views
1

我有一個關於PHP/MYSQL的問題。我有一個函數可以獲取MYSQL表中的顏色列表,並將它們呈現爲多個HTML表格。想法是,除非客戶選擇某個選項,否則大部分將被隱藏。當用戶將鼠標放在一個顏色上時,它會加載更詳細的圖片。它工作正常,一定數量的腳本停止執行caracters後然而,這裏是代碼:爲什麼我的SQL腳本停止?

請求:

$sql = 'SELECT *, GROUP_CONCAT(description ORDER BY i.model_correspondance ASC) AS concat,  GROUP_CONCAT(model_correspondance ORDER BY i.model_correspondance ASC) AS modell, GROUP_CONCAT(element) AS elem, GROUP_CONCAT(coordinates ORDER BY i.model_correspondance ASC) AS coord FROM design_tool_items AS i WHERE i.model='.$shoe.' GROUP BY i.element, i.category, i.subelement ORDER BY i.id ASC'; 

而且PHP的休息:

 if ($results = Db::getInstance()->ExecuteS($sql)) { 
      foreach ($results as $row) { 

       if($row['subelement']=='') { 
        if(isset($i)) $code .= '</div>'; 
         $code .= '<div class="'.$display.' color_holder" rel="'.$row['style'].'" id="div'.$row['subelement'].'.'.$row['element'].'">'; 
         $i=1; 
       } else { 
        $code .= '</div>'; 
        $code .= '<div class="no color_holder" rel="'.$row['style'].'" id="div'.$row['subelement'].'.'.$row['element'].'">'; 
       } 

       $sentinel = $row['element']; 
       $code .= '<div style="text-align:left;padding:10px">'.$row['category'].'</div>'; 
       $concat = explode(',', $row['concat']); 
       $coordinate = explode(',', $row['coord']); 
       $model_corres = explode(',', $row['modell']); 

       foreach($concat as $item => $corres) { 

        if(($i==1)&&(array_search($sentinel, $array_elements)===false)) { 
         $array_elements[] = $sentinel; 
         $select = 'selected'; 
        } else $select = ''; 

        $coord = explode('#', $coordinate[$item]); 

        $clean_array = array($row['category'], $corres); 
        foreach($clean_array as &$text) { 
         $text = str_replace(' ', '_', $text); 
         $text = strtolower($text); 
        } 

        $code .= '<div style="width:60px;padding-left:10px;margin:auto;float:left;">'; 
        $code .= '<div onmouseover="Tip(\'<div><img style=width:200px;height:200px; src='.$val.'folded_images/'.$clean_array[0].'/'.$clean_array[1].'.jpg alt=Image:'.$corres.' /><br>'.$corres.'</div>\')" onmouseout="UnTip()" rel="'.$row['style'].'" denom="'.$row['subelement'].'.'.$sentinel.$model_corres[$item].'" class="color '.$select.'" style="background-position:'.$coord[0].'px '.$coord[1].'px;"></div>'; 
        $code .= '</div>'; 
        if(is_int($i/3)) $code .= '<div style="clear:both;"></div>'; 
        $i++; 
       } 
       $code .= '<div style="clear:both;"></div>'; 
      } 
     } 

     return $code; 

在第100行腳本在中間停止工作,只顯示描述的前三個字符。如果我減少前面描述的長度,它會進一步工作,所以問題來自數組$ concat。

你覺得有一個大小限制(我知道PHP 5.2和8Mb中的128Mb,但是網站運行PHP 5.2.3之前我認爲我遠離128Mb)?

對不起,長話題,提前感謝大家誰會關注這一點。

祝您有美好的一天!

回答

1

它是因爲使用了GROUP_CONCAT

有用的鏈接可能有用。 link

+0

非常感謝,它修復了它! – 2013-03-22 02:54:42

+0

我們歡迎您。如果你認爲它回答你的問題,你可以接受它作爲回答 – 2013-03-22 02:57:16

+0

我必須先等待5分鐘,但是會做 – 2013-03-22 02:58:54

0

可能與max execution time和/或memory limit有關。值得單獨調整(如果有疑問,然後一起),看看你是否得到了有利的結果。您可能還想啓用更好的debug logging for PHP

+0

感謝您的幫助,凱伊的解決方案修復了它! – 2013-03-22 02:55:02