【发布时间】:2015-05-07 16:39:05
【问题描述】:
我整天都在为此苦苦挣扎: 我正在显示一个带有子菜单的菜单,同样的代码正在生产中工作,这让我的情况更加奇怪。我当前的开发环境使用 php 5.4。
在开发环境中,此代码会导致一个没有错误的空页面(激活了 display_errors 和 error_log 并正常工作)。如果不是去第二个,我只运行一次,一切正常(但只显示一个项目)
$query = 'SELECT * FROM permisos as p LEFT JOIN secciones_web as s ON p.id_seccion_web = s.id WHERE s.parent_id = 0 AND s.activo = 1 AND (p.seccion = "'.$_SESSION["user_section"].'" OR p.usuario="'.$_SESSION["user"].'") GROUP BY p.id_seccion_web ORDER BY s.orden ASC';
$results = mysql_query($query);
$menu = "";
while($rowp = mysql_fetch_assoc($results)){
$menu.='<li class="submenu"><a href="#"><i class="icon '.$rowp["icon"].'"></i> <span>'.$rowp["nombre"].'</span></a><ul>';
$q = 'SELECT * FROM permisos as p LEFT JOIN secciones_web as s ON p.id_seccion_web=s.id WHERE s.parent_id='.$rowp["id"].' AND s.activo=1 AND (p.seccion = "'.$_SESSION["user_section"].'" OR p.usuario="'.$_SESSION["user"].'") GROUP BY p.id_seccion_web ORDER BY s.orden ASC';
$resultado = mysql_query($q,$db_conn);
while($rowsubmennu = mysql_fetch_assoc($resultado)){
if($_SESSION["user_section"] == "Almacén" && $rowsubmennu["url"] == "pedido-almacen.php"){
$menu.='<li><a href="'.$rowsubmennu["url"].'" class="navi">'.$rowsubmennu["nombre"].'<span class="label label-pedidos">0</span></a></li>';
}else{
$menu.='<li><a href="'.$rowsubmennu["url"].'" class="navi">'.$rowsubmennu["nombre"].'</a></li>';
}
}
$menu.= "</ul></li>";
}
关于为什么第二次崩溃我的应用程序没有错误的任何线索?
更新:完整页面在这里:http://pastebin.com/FPrQgsbE
【问题讨论】:
-
几乎 100% 是
$db_conn,删除它 -
@Hanky웃Panky 为什么?这是一个可选参数,明确提供它没有任何害处。
-
是的,但其中可能存在拼写错误,他们的第一个查询有效,因为他们不提供。如果显式提供的值是无效资源,它将失败
-
你为什么要做两个单独的查询而不是将它们与
LEFT JOIN结合起来? -
将
or die(mysql_error())添加到mysql_query两行的末尾,查看是否出现SQL 错误。