我对PHP / MYSQL有疑问。我有一个函数,它获取MYSQL表中的颜色列表,并将它们呈现为多个HTML表。想法是,除非客户选择某个选项,否则大多数将被隐藏。当用户将鼠标放在颜色上时,它会加载更详细的图片。它工作正常,但是在脚本停止执行一定数量的caracters后,这里是代码:
请求:
$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)?
对于这个冗长的主题感到抱歉,请提前感谢所有关注此事的人。
祝你有个美好的一天!
答案 0 :(得分:1)
因为使用GROUP_CONCAT
。
可能有用的有用链接。 link
答案 1 :(得分:0)
可能与max execution time和/或memory limit有关。值得每个人单独调整(然后,如果有疑问,一起),看看你是否得到了有利的结果。您可能还希望启用更好的debug logging for PHP。