Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, pessoal!
Estou tentando fazer duas ou mais requisições no banco de dados MySQL via PHP, mas somente a primeira requisição está aceitando utilizar os comandos "mysql_alguma_coisa". Por exemplo: Uso um trecho em PHP que faz a requisição de uma lista para imprimir no começo da página. Os comandos requeridos são "mysql_query", "mysql_num_rows","mysql_fetch_row", etc. A primeira vez funciona redondo. Só que, mesmo depois de já ter usado e ao solicitar uma segunda requisição, os comandos estão retornando false, por exemplo:"Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in caminho_do_arquivo.php".
Já experimentei fazer dentro de classes e retornar o array com os objetos, já tentei inclusive abrir conexão dentro da página, coisa que é inaceitável, mas mesmo assim continua dando problemas. Alguém pode me auxiliar, por favor?
Página principal:
<html>
<?php include "../shared/head.php"; ?>
<body>
<!--Corpo da página-->
<div class="corpo">
<?php include "../shared/topMenu.php"; ?>
<div class="inner">
<!--Cabeçalho-->
<?php include "../shared/header.php"; ?>
<div class="conteudo">
<div id="containerCenter">
<div id="menuNoticias">
<?php include "menuCategorias.php";?>
</div>
<?php include "containerCenter.php"; ?>
</div>
</div>
</div>
</div>
<body>
</html>
Arquivo Header.php chama o listaMenus.php, que faz o uso da primeira requisição ao banco de dados:
<?php
include("/../../models/menus.php");
$menuLista = new Menu();
$arrayMenu = array();
$arrayMenu = $menuLista->listaMenus();
for($i=0; $i<=sizeof($arrayMenu); $i++)
{
if(isset($arrayMenu[$i]))
{
$menu = new Menu();
$menu = $arrayMenu[$i];
echo "<li><a href=\"$menu->link\">$menu->nome</a></li>";
}
}
?>
Arquivo menuCategorias, que deveria trazer outro menu (de categorias), mas que está retornando "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\www\models\noticias.php on line 120":
<div id="menuCategorias">
<ul id="menuCategorias">
<?php
include_once("../../models/noticias.php");
$_categoria = new CategoriaNoticia();
$arrayCategorias = $_categoria->listarCategoriasMenu();
for($i=0; $i<=sizeof($arrayCategorias); $i++)
{
if(isset($arrayCategorias[$i]))
{
$_categoria2 = new CategoriaNoticia();
$_categoria2 = $arrayCategorias[$i];
echo "<li><a href=\"scriptNoticias.php?acao=verNoticias&idCategoria=$_categoria2->idCategoriaNoticia\">$_categoria2->categoria</a></li>";
}
}
?>
</ul>
<div> public function listaMenus()
{
$query = "CALL sp_menusSelectActive();";
$resultado = mysql_query($query);
mysql_close();
$linhas = mysql_num_rows($resultado);
$arrayMenu = array();
for($i=0; $i<$linhas; $i++)
{
$_menu = new Menu();
$registro = mysql_fetch_row($resultado);
$_menu->nome = $registro[0];
$_menu->link = $registro[1];
$arrayMenu[$i] = $_menu;
}
return $arrayMenu;
}
Função listarCategoriasMenu utilizada:
public function listarCategoriasMenu()
{
$query = "CALL sp_categoriasNoticiasSelectAll();";
$resultado = mysql_query($query);
mysql_close();
$linhas = mysql_num_rows($resultado);
$arrayCategorias = array();
for($i=0; $i<$linhas; $i++)
{
$_categoria = new CategoriaNoticia();
$registro = mysql_num_rows($resultado);
$_categoria->idCategoriaNoticia = mysql_result($resultado,$i,'idCategoriaNoticia');
$_categoria->categoria = mysql_result($resultado,$i,'categoria');
$arrayCategorias[$i] = $_categoria;
}
return $arrayCategorias;
}
Se alguém puder me dar uma dica do que pode estar errado, agradeço muito. Mas não vale mandar abrir conexão de banco fora da classe, cujo qual já está incluída na mesma!Carregando comentários...