Foros del Web » Programando para Internet » PHP »

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Estas en el tema de Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in en el foro de PHP en Foros del Web. Hola que tal, soy nuevo en el foro y quisiera que me ayudaran en algo... Me han pedido programar un foro pero me marca un ...
  #1 (permalink)  
Antiguo 23/11/2011, 22:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Exclamación Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Hola que tal, soy nuevo en el foro y quisiera que me ayudaran en algo...
Me han pedido programar un foro pero me marca un error:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\index.php on line 10

Este es mi codigo:


Cita:
<?php

require("header.php");

$catsql = "SELECT * FROM categories;";
$catresult = mysql_query($catsql);

echo "<table cellspacing=0>";

while($catrow = mysql_fetch_assoc($catresult)) {
echo "<tr class='head'><td colspan=2>";
echo "<strong>" . $catrow['name'] . "</strong></td>";
echo "<tr>";

$forumsql = "SELECT * FROM forums WHERE cat_id = " . $catrow['id'] . ";";
$forumresult = mysql_query($forumsql);
$forumnumrows = mysql_num_rows($forumresult);

if($forumnumrows == 0) {
echo "<tr><td>No forums!</td></tr>";
}
else {
while($forumrow = mysql_fetch_assoc($forumresult)) {
echo "<tr>";
echo "<td>";

echo "<strong><a href='viewforum.php?id=" . $forumrow['id'] . "'>" . $forumrow['name'] . "</a></strong>";
echo "<br/><i>" . $forumrow['description'] . "</i>";
echo "</td>";
echo "</tr>";
}
}

}
echo "</table>";

require("footer.php");

?>

Si pudieran ayudarme con esto seria de gran ayuda!!!

Última edición por RyanDWayne; 23/11/2011 a las 22:31
  #2 (permalink)  
Antiguo 23/11/2011, 22:38
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 4 meses
Puntos: 37
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Saludos. Revisa si la SQL que usas está arrojando algún resultado, o si se está ejecutando correctamente.

Te lo digo porque el error que te da dice que el parámetro 1 de mysql_fetch_assoc debe ser un resultado de una consulta y en su lugar está entrando un booleano.

Lo que pasa es que la variable $catresult debe contener ese resource que la función espera encontrar. Si la variable $catresult contiene un boolean en lugar de un resource, es señal de que la consulta de mysql_query no arrojó ningún resultado. En este caso $catresult contiene un valor booleano igual a False.

Revisa la SQL. Tal vez el nombre de tabla no es exactamente ese, o el nombre del campo está mal escrito, o simplemente la tabla está vacía en la BD.

Otra idea es condicionar la ejecución de ciclo while, así:

Código PHP:
Ver original
  1. if($catresult){
  2.     //Aquí pones todo el código del ciclo while
  3. }

De esta forma no se ejecuta el while si $catresult no contiene los resultados esperados. oSaludos.

Última edición por jorgelpadronb; 23/11/2011 a las 22:48
  #3 (permalink)  
Antiguo 15/04/2013, 09:20
 
Fecha de Ingreso: abril-2010
Mensajes: 3
Antigüedad: 14 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Amigo al parecer es un problema de sintaxis de php, la nuevas versiones de php son CASE SENSITIVE, por tal razón te esta diciendo q debes colocar las mayúculas o minúsculas según sea el caso de los nombres de tus tablas y campos de tu BD al momento de crear tu SQL en php.

Por ejemplo:

Lo que tienes actualmente:

$catsql = "SELECT * FROM categories;";

Lo que debería ser (correcto):

$catsql = "SELECT * FROM Categories";

Prueba con eso, luego ya no debería mostrarte ese error.

A mi me paso eso y lo solucioné de esa forma.

Suerte
  #4 (permalink)  
Antiguo 15/04/2013, 09:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Cita:
Iniciado por aerofly Ver Mensaje
Amigo al parecer es un problema de sintaxis de php, la nuevas versiones de php son CASE SENSITIVE, por tal razón te esta diciendo q debes colocar las mayúculas o minúsculas según sea el caso de los nombres de tus tablas y campos de tu BD al momento de crear tu SQL en php.

Por ejemplo:

Lo que tienes actualmente:

$catsql = "SELECT * FROM categories;";

Lo que debería ser (correcto):

$catsql = "SELECT * FROM Categories";

Prueba con eso, luego ya no debería mostrarte ese error.

A mi me paso eso y lo solucioné de esa forma.

Suerte


Pero eso no tiene nada que ver con las versiones de PHP.

La cadena $catsql es una cadena de texto y no más, que los nombres de tabla/columna sean case-sensitive es un tema del motor de la base de datos, no de PHP.

Así que por favor no afirmes cosas sin tener argumentos para defender tus opiniones, generas mas confusión que solución con tus nada acertados comentarios.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 15/04/2013, 09:44
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años, 8 meses
Puntos: 28
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

prueba sin el punto y coma final:

$catsql = "SELECT * FROM categories";
  #6 (permalink)  
Antiguo 08/11/2016, 06:08
 
Fecha de Ingreso: agosto-2015
Mensajes: 4
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Hola yo tengo el mismo problema he intentado de todo,
la diferencia es que estoy usando PHP orientado a objetos
pero vamos que ese no es el problema el tema es que no me debuelve ningun resultado mirad de esta manera no me funciona:

//--------------------- CLASE CONEXION-----------------------------

<?php namespace Models;

class Conexion{
private $conexion;
private $datos = array(
"host" => "localhost",
"user" => "root",
"pass" => "1234",
"db" => "proyecto"
);

public function __construct(){
$this->conexion = new \mysqli(
$this->datos["host"],
$this->datos["user"],
$this->datos["pass"],
$this->datos["db"]
);
}

public function consulta($sql){
$this->conexion->query($sql);
}

public function resultado($sql){
$resultado = $this->conexion->query($sql);
return $resultado;
}

};

?>

//--------------------- CLASE ESTUDIANTE -----------------------------

<?php namespace Models;

class Estudiante{
private $conexion;

public function __construct(){
$this->conexion = new Conexion();
}

public function mostrar(){
$sql = "SELECT * FROM estudiantes";
$datos = $this->conexion->resultado($sql);
$row = mysql_fetch_assoc($datos);
return $row;
}
};
?>

//--------------------- FIN POO -----------------------------


De forma extructurada si que me funciona


//--------------------- FORMA EXTRUCTURADA -----------------------------

$conexion = mysql_connect("localhost", "root", "1234") or die ("Error de conexion!");
mysql_select_db("proyecto", $conexion) or die ("Error de base datos!");

$consulta = "SELECT * FROM estudiantes";
$resultado = mysql_query($consulta, $conexion);

while($tabla = mysql_fetch_assoc($resultado)){
echo $tabla['nombre']."</br>";
}
  #7 (permalink)  
Antiguo 08/11/2016, 12:39
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 10 años, 1 mes
Puntos: 91
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Cita:
Iniciado por arcademan Ver Mensaje
Hola yo tengo el mismo problema he intentado de todo,
la diferencia es que estoy usando PHP orientado a objetos
pero vamos que ese no es el problema el tema es que no me debuelve ningun resultado mirad de esta manera no me funciona:

//--------------------- CLASE CONEXION-----------------------------

<?php namespace Models;

class Conexion{
private $conexion;
private $datos = array(
"host" => "localhost",
"user" => "root",
"pass" => "1234",
"db" => "proyecto"
);

public function __construct(){
$this->conexion = new \mysqli(
$this->datos["host"],
$this->datos["user"],
$this->datos["pass"],
$this->datos["db"]
);
}

public function consulta($sql){
$this->conexion->query($sql);
}

public function resultado($sql){
$resultado = $this->conexion->query($sql);
return $resultado;
}

};

?>

//--------------------- CLASE ESTUDIANTE -----------------------------

<?php namespace Models;

class Estudiante{
private $conexion;

public function __construct(){
$this->conexion = new Conexion();
}

public function mostrar(){
$sql = "SELECT * FROM estudiantes";
$datos = $this->conexion->resultado($sql);
$row = mysql_fetch_assoc($datos);
return $row;
}
};
?>

//--------------------- FIN POO -----------------------------


De forma extructurada si que me funciona


//--------------------- FORMA EXTRUCTURADA -----------------------------

$conexion = mysql_connect("localhost", "root", "1234") or die ("Error de conexion!");
mysql_select_db("proyecto", $conexion) or die ("Error de base datos!");

$consulta = "SELECT * FROM estudiantes";
$resultado = mysql_query($consulta, $conexion);

while($tabla = mysql_fetch_assoc($resultado)){
echo $tabla['nombre']."</br>";
}
Tu problema es que usas POO con mysql, debes de usar las funciones nuevas tambien mysqli

Cambiar

Por
Código PHP:
Ver original
  1. fetch_assoc()

http://php.net/manual/es/mysqli-result.fetch-assoc.php
  #8 (permalink)  
Antiguo 08/11/2016, 13:02
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años, 1 mes
Puntos: 154
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

El problema principal es que este hilo se empezó hace 5 años, si ya se considera que no está bien abrir hilos de más de 6 meses, no digamos de hace 5 años...

Lo mejor es abrir uno nuevo haciendo referencia al original, pero no "resucitar" uno tan antiguo.

Etiquetas: arrays, assoc, boolean, fetch, mysql, mysql_fetch_assoc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:17.