Foros del Web » Programando para Internet » PHP »

error "argument is not a valid MySQL..." al subir a la web [SOLUCIONADO]

Estas en el tema de error "argument is not a valid MySQL..." al subir a la web [SOLUCIONADO] en el foro de PHP en Foros del Web. Hola, antes de empezar decir que he escrito este mismo mensaje en el apartado de mysql por que crei que quizás iba mas por ahi, ...
  #1 (permalink)  
Antiguo 27/02/2010, 21:11
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
error "argument is not a valid MySQL..." al subir a la web [SOLUCIONADO]

Hola, antes de empezar decir que he escrito este mismo mensaje en el apartado de mysql por que crei que quizás iba mas por ahi, pero me recomendaron que lo expusiese aqui, asi que por favor cerrar el otro post y responderme en este.
Bueno, despues de esta aclarcion, os comento, vereis tengo una base de datos y la he subido a un servidor.
En local no tengo ningún problema me sale todo perfecto, sin embargo al subirla a la web me salta con este error

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a6874876/public_html/dcha.php on line 38
Este es el archivo que me da el error al subirlo
Código PHP:
<?php

$categorias
=$_GET["categ"];
if (!
$categorias)
    {
$categorias="Animacion";}
$mostrando="categoria ".$categorias;

$sql="SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%".$categorias."%' LIMIT 0,20";
$letra=$_GET["letra"];
echo 
$sql;
if(
$letra){
$sql="SELECT * FROM PELICULAS WHERE TRANSLATEDTITLE LIKE '".$letra."%' LIMIT 0,10";
$mostrando=" resultados que empiecen por la letra ".$letra;
}
$buscar=$_GET["buscar"];
if(
$buscar){
$sql="SELECT * FROM peliculas  WHERE TRANSLATEDTITLE LIKE '%".$buscar."%' limit 20";
$mostrando='resultado buscando... '.$buscar;
}
?>
<table width="600">
<tr >
<td class="mostrando" colspan="3"><?php echo 'Mostrando <strong><i><u>'.$mostrando.'</u></i></strong>' ?></td>
</tr>
<tr >
    <td class="titulos">Ver</td>
    <td class="titulos">Modificar</td>
    <td class="titulos">Eliminar</td>
    <td class="titulos">Titulo</td>
    <td class="titulos" >Caratula en Mini</td>
</tr>

<tr >
<?php

$identificador
=0;
$consulta=mysql_query($sql,$conexion);
while(
$registros=mysql_fetch_array($consulta))
    {if(
$identificador%2==0)
            {
$color="color1";}
        else
            {
$color="color2";}
            
//enlace para ver detalle
        
echo '<tr  class="'.$color.'"><td class="bbdduno" width="30"><a href="index.php?p=detalle.php&num='.$registros["NUM"].'">
                                            <img src=b_browse.png border=0 />
                                    </a></td>'
;
        
//enlace para modificar
        
echo '<td class="bbdduno" width="30"><a href="index.php?p=modificar.php&num='.$registros["NUM"].'">
                                            <img src=hoja.png border=0 />
                                    </a></td>'
;
        
//enlace para eliminar
    
echo '<td class="bbdddos"><a href="index.php?p=eliminar.php&num='.$registros["NUM"].'&categ='.$categorias.'"
    onclick="if(!confirm(\'¿Estas seguro de eliminar?\'))return false"><img src=cerrarx.jpg border=0 /></td>'
;                    
    echo 
'<td class="bbdddos">'.$registros["TRANSLATEDTITLE"].'</td>';
    echo 
'<td class="bbdddos">'.$registros["DIRECTOR"].'</td></tr >';
    
$identificador++;
        }
 
?>

</tr >
</table>
Me recomendaron poner una "@" al inicio de funciones tales como mysql_query y mysql_fetch_array y la linea que marca el error desaparece sin embargo el error se mantiene y no me muestra la base de datos. La base de datos esta perfectametne subida y puedo acceder desde la web perfectamente desde el phpmyadmin, sin embargo por alguna razón desconocida me da ese error y no me muestra el proyecto correctamente.

¿Me podeis ayudar?
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333

Última edición por neoarcangel; 28/02/2010 a las 16:40
  #2 (permalink)  
Antiguo 27/02/2010, 21:28
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Porque no intentas colocar un:

echo($sql);

para que veas si se está armando de forma correcta tu query, es posible que tus variables estén pasando vacías y la cadena resultante sea una query mal formada.
  #3 (permalink)  
Antiguo 27/02/2010, 21:40
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Ya lo habia probado, de hecho como digo en localhost me funciona perfectamente, no obstante me sale esto

"SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%Aventuras%' LIMIT 0,20"
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #4 (permalink)  
Antiguo 27/02/2010, 21:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Eso significa simplemente que la consulta quedó bien construida:
Código MySQL:
Ver original
  1. SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%Aventuras%' LIMIT 0,20
Mi pregunta es: ¿Hay registros que existan en esa tabla Películas, donde en "Category" haya valores que cumplan con el WHERE?
Si la consulta no devolviese registros, ¿has considerado que debes controlar la llegada de un resultado NULL?

Y la máxima obviedad... ¿Te aseguraste que la conexión esté correctamente abierta? (ya nos pasó de un forista con ese mensaje y finalmente ese era el problema...)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/02/2010, 21:51
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Cita:
Iniciado por paynalton Ver Mensaje
Porque no intentas colocar un:

echo($sql);

para que veas si se está armando de forma correcta tu query, es posible que tus variables estén pasando vacías y la cadena resultante sea una query mal formada.
Y para que los parentesis? Eso lo unico que haria es generar otro error...
En todo caso seria

Código PHP:
echo $sql
En cuanto al problema, yo revisaria bien lo que sugiere gnzsoloyo y tambien me aseguraria que es PELICULAS... No sera 'peliculas' (en minuscula)?
__________________
HV Studio
Diseño y desarrollo web
  #6 (permalink)  
Antiguo 27/02/2010, 21:57
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

La conexion creo que esta bien, ya que en el php my admin me aparecen todos los campos y correctamente, esta es

/
Cita:
/Nos conectamos a la base de datos
$conexion=mysql_connect($mysql_host,$mysql_user,$m ysql_password);
mysql_select_db($mysql_database,$conexion);
El tema de los null, la verdad que no no lo he considerado, ya que como me funciona en local pues en teoria deberia funcionar tal cual al subirlo. Hay categorias que no tienen ninguna pelicula no obstante ¿seria algo asi?
Cita:
if($category==null)
{echo "no hay registros en esa categoria"}
else
{$sql= "SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%Aventuras%' LIMIT 0,20"}
No obstante esta es una captura de la base de datos en el phpmyadmin en la web, para que veais que coge bien los datos
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #7 (permalink)  
Antiguo 27/02/2010, 22:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Cita:
El tema de los null, la verdad que no no lo he considerado, ya que como me funciona en local pues en teoria deberia funcionar tal cual al subirlo. Hay categorias que no tienen ninguna pelicula no obstante ¿seria algo asi?
Cita:
if($category==null)
{echo "no hay registros en esa categoria"}
else
{$sql= "SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%Aventuras%' LIMIT 0,20"}
No obstante esta es una captura de la base de datos en el phpmyadmin en la web, para que veais que coge bien los datos
Creo que así sería la idea. El tema pasa porque mysql_fetch_array no podría acceder a ningún resultado si la consulta no devuelve al menos un registro, por lo que el objeto no sería válido.

Hay un tema pendiente y es que el hecho de que funcione en localhost, y esto hay que entenderlo bien, no implica que un sistema funcione en web, ya que aquí pesan mucho los permisos de usuario, y los datos que estén realmente en la base de web. Esto útimo en tu caso no lo sé, porque en la imagen no se ve la columna en cuestión.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 27/02/2010, 23:29
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

El tema de los permisos de momento no lo he hecho, de momento queria probar como iba en la web, he añadido la linea para asegurarse de los datos null, y ahora no suelta ningun error, no obstante cuando pulso en una categoria no sale absolutamente nada, sin embargo en cada categoria tengo un conteo del numero de peliculas que hay por esa categoria, y en todas me aparece el numero de peliculas, sin embargo no puedo verlas.

Me explico, lo que yo veo en el menu de la izquierda es algo asi

Aventuras (320)
Ciencia ficcion(150)
Familiar(400)
Drama(2)

Es decir me hace el conteo correctamente de las que tiene por categoria sin embargo no me muestra ninguna.
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #9 (permalink)  
Antiguo 27/02/2010, 23:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error "argument is not a valid MySQL..." al subir a la web

¿Con qué sentencia o método obtienes las cantidades de películas por categoría?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 28/02/2010, 10:59
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Uso esta funcion

mysql_num_rows($consulta)
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #11 (permalink)  
Antiguo 28/02/2010, 11:02
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Pregunta Respuesta: error "argument is not a valid MySQL..." al subir a la web

la sintaxis es:

Código PHP:
$not mysql_query($consulta);
$num_rs_not mysql_num_rows($not);
while(
blablablabla...) 
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #12 (permalink)  
Antiguo 28/02/2010, 11:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error "argument is not a valid MySQL..." al subir a la web

Cita:
Iniciado por neoarcangel Ver Mensaje
Uso esta funcion

mysql_num_rows($consulta)
Me refería a lo que tienes dentro de la variable $consulta en este caso.
Lo que quiero saber es cómo realizas la suma para que en un caso devuelva y en el otro no.
Pero aparentemente lo que tienes es un SELECT * FROM... en lugar de un SELECT COUNT(*) ..., que sería en realidad más eficiente desde el punto de vista de SQL.
La cosa es por qué no devuelve cuando pones una condición LIKE.
En este momento lo único que se me ocurre es cambiar el patrón buscado de "Aventuras" a "Aventur", es decir, LIKE '%Aventur%'.
Ya que el problema no se da por conexiones ni en consultas genéricas, ni tampoco por datos, es posible que ese sea el problema: el patrón.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 28/02/2010, 14:46
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

A ver me explico
Tenemos esta funcion
mysql_num_rows($consulta)
que hace un conteo de las filas de $consulta, que a su vez tiene esto
$consulta=mysql_query($sql,$conexion) que lo que hace es hacer una consulta sql mediante las variables $sql y $conexion.
$conexion contiene esto
$conexion=mysql_connect($mysql_host,$mysql_user,$m ysql_password);
Y también tiene
$sql="SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%".$categorias."%' LIMIT 0,20";
un select que lo he limitado a 20 registros para accelerar la carga.


El tema es el siguiente partimos de una pagina que tiene dos partes, la parte de la izquierda y la parte de la derecha, la parte de la derecha es el codigo que puse al principio del post, tal cual, y la parte de la izquierda no es mas que un array que contiene unos cuantos generos cinematograficos que aparte de estar convertidos en hipervinculos para poder pulsar desde la parte izquierda y mandar a la derecha la variable "categ" para ser recogida mediante $categorias=$_GET["categ"];, que a su vez interviene en la sentencia $sql
$sql="SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%".$categorias."%' LIMIT 0,20";

no se si queda claro, resumiendo, hacemos una lista mediante arrays en la parte izquierda que convertimos en links y cada vez que pulsamos en uno de ellos los mandamos a la parte derecha y también mandamos la categoria que pulsamos para recogerla en la parte derecha y que forme parte de la sentencia $sql, es por ello que al estar planteado asi, no podria mandar el nombre a medias, es decir no podria mandar Aventur, en vez de aventuras por que el link manda el nombre entero de la categoria.
Espero que haya quedado algo claro, cualquier duda me decis por favor.
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #14 (permalink)  
Antiguo 28/02/2010, 15:25
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: error "argument is not a valid MySQL..." al subir a la web

Hola,

Posiblemente ...

Cita:
Iniciado por jackson666 Ver Mensaje
... y tambien me aseguraria que es PELICULAS... No sera 'peliculas' (en minuscula)?
Cita:
Iniciado por neoarcangel Ver Mensaje
...
Cita:
Iniciado por neoarcangel Ver Mensaje
$sql="SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%".$categorias."%' LIMIT 0,20";
$sql="SELECT * FROM PELICULAS WHERE CATEGORY LIKE '%".$categorias."%' LIMIT 0,20";
En Unix PELICULAS != peliculas != Peliculas, el sistema de archivos en Linux es 'case sensitive'.
Si te funciona localmente (presumiblemente en Windows) entonces el código está correcto.
Revisa el usuario de conexión a la base de datos, su contraseña, el nombre de la base de datos y el nombre de las tablas.
En tu hosting le agregan un número al usuario y a la base de datos a6874876_.

Saludos,
  #15 (permalink)  
Antiguo 28/02/2010, 16:39
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: error "argument is not a valid MySQL..." al subir a la web

¡¡¡¡¡¡Justo!!!!! lo he modificado de mayusculas a minusculas y a funcionado...¡¡¡¡¡!POR FIN!!!!!. Sinceramente no me imaginaba que fuese algo tan sencillo pero claro, windows muchas veces le da igual mayusculas que minusculas.

Bueno,pues despues de tanta historia era simplemente eso.
Muy agradecido a todos los que habeis perdido vuestro tiempo y me habeis ayudado en esto.

Saludos
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333

Etiquetas: solucionado, subir
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 13:43.