Foros del Web » Programando para Internet » PHP »

Mis dos errores

Estas en el tema de Mis dos errores en el foro de PHP en Foros del Web. El primer error que me aparece y no entiendo el porqué es este, a la hora de hacer el debug: Alerta de Debug: C:\AppServ\www\prueba_modificar.php línea ...
  #1 (permalink)  
Antiguo 05/05/2004, 09:37
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Mis dos errores

El primer error que me aparece y no entiendo el porqué es este, a la hora de hacer el debug:

Alerta de Debug: C:\AppServ\www\prueba_modificar.php línea 14 - mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Teniendo puesto lo siguiente en el script:
----------------------------------------------------------------------------------
$resul=mysql_db_query($base,"SELECT COUNT(campo) FROM $tabla WHERE campo=$Penitente",$conexion))

$comprueba=mysql_fetch_array($resul);
----------------------------------------------------------------------------------

Y el segundo error es, ya ejecutando con el navegador:

error 1054: unknown column tal in 'where clause'

¿A qué se deben?

Sagradece!
  #2 (permalink)  
Antiguo 05/05/2004, 10:15
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
no sería:
Código PHP:
mysql_db_query($base);

$result=mysql_query("SELECT COUNT(campo) FROM $tabla WHERE campo=$Penitente",$conexion);

$comprueba=mysql_fetch_array($resul); 
  #3 (permalink)  
Antiguo 05/05/2004, 10:25
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Lo que tu pones de "mysql_db_query" no esta completo... Porque le hace falta la sentencia SQL, ademas de la base de datos. ¿No?
  #4 (permalink)  
Antiguo 05/05/2004, 10:40
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Bueno

Si pusiesas el código completo fuera mucho mejor. Por arriba lo que te está diciendo el primer error es que $resul no devolvío nada en esa consulta que tratas de hacer por lo que jamás se te ejecutará la otar sentencia, es decir, el mysql_fetch_array($resul). Revisa que todos los parámetros que le pasas a la consulta lleguen con valores y que esten correctos. Por otra parte creo que la sintaxis de tu sentencia SQL está incorrecta. Sería algo más o menos así:
Código PHP:
 SELECT COUNT(campoFROM ".$tabla." WHERE campo=".$Penitente." //Yo lo hago así y pocas veces me da error. 
El otro error te está diciendo que estás tratando de realizar una operación sobre una columna o tupla que no existe en la BD. Chequea bien eso.
Si no te funciona pon el código completo para ver que pasa.

Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 06/05/2004, 09:57
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Perfecto, muchas gracias. Lo he puesto tal como me decias y ya no sale la alerta aquella, en cambio sigue saliendo lo de "Unknown column in where clause". Con lo cual, paso a poner lo que tengo, a ver porqué no me reconcoce la tupla. O el campo.

La tabla la tengo creada con esta estructura:

-------------------------------------
$tabla="demo";
$crear="CREATE TABLE $tabla (";
$crear.="nick VARCHAR(15) NOT NULL,";
$crear.="password VARCHAR(15) NOT NULL, ";
$crear.="email VARCHAR(30) NOT NULL, ";
$crear.=" PRIMARY KEY(nick), ";
$crear.=")";
--------------------------------------

Por otra parte, tengo un archivo que me crea la conexion:

---------------------------------------
<?
mysql_connect("localhost", "user", "pass") or die ("No puedo conectarme a la base de datos");
mysql_select_db("pruebas_db") or die ("No puedo conectarme a la tabla de la base de datos");
?>
------------------------------------------

Y, finalmente, el archivo que recibe los datos de un formulario. Lo que quiero hacer es, de una manera muy muy muy sencilla y arcaica, que un usuario, presente en la base de datos, introduzca su nick y la nueva contraseña, y al pulsar el botón "Modificar", pues eso, quelo modifique:

--------------------------------------------
<?PHP
tabla="demo";

require 'conecta.php';

$sql="SELECT COUNT(nick) FROM ".$tabla." WHERE nick=".$Penitente."";

$resul=mysql_query($sql) or die (mysql_error());

$comprueba=mysql_fetch_array($resul);

if ($comprueba[0]==0){$avisar="No existe nadie con el NICK ".$Penitente. "en la base de datos<br> La modificación no ha sido procesada<br>";}
else $avisar="";

$sql="UPDATE ".$tabla." SET password=".$Contraseña." WHERE nick=".$Penitente."";

$resul=mysql_query($sql) or die (mysql_error());

if (mysql_errno($con)==0)
echo "";
elseif (mysql_errno($con)==1062)
echo "<h3>No ha podido añadirse el registro porque ya existe un campo con ese nick</h3>";
else {
$numerror=mysql_errno($con);
$descerror=mysql_error($con);
echo "<h3>Se ha producido el error número $numerror que indica: $descerror</h3>";
}

mysql_close();
----------------------------------------------------------

No he puesto comentarios porque en principio me parece sencillo de entender y tal.
  #6 (permalink)  
Antiguo 06/05/2004, 10:01
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
No sé si hará falta, pero por si acaso, pongo tambien el formulario que llama a lo anterior.

--------------------------------------------------
<html>
<head><title>Formulario de modificaciones</title></head>
<body>
<h2><center>MODIFICACION DE CONTRASEÑA<BR>

<!-- Caundo la variable $avisa recoge el mensaje creado en
el script que actualiza la base de datos, la imprimimos
con esta etiqueta PHP -->

<? echo $avisar; ?>

</H2></CENTER>
<FORM name="modificar" method="POST" action="prueba_modificar.php">

<table align=center border=2>
<td>Escriba el NICK del usuario para modificar...:</td>
<td><input type="text" name="Penitente" value=""></td><tr>
<td>Escriba aquí la nueva contraseña...:</td>
<td><input type="text" name="Contraseña" value=""></td><tr>
<td align=center><input type="submit" value="Modificar"></td>
<td align=center><input type="reset" value="Borrar"></td>
</form>
</table>
<br><BR>
<H3><CENTER>Tenga en cuenta que la modificación requiere<br>un NICK existente en la base de datos</center></h3>

</body>
</html>
---------------------------------------------------------------------
  #7 (permalink)  
Antiguo 06/05/2004, 18:57
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Aguanta ...

Estuve mirando tu código y tengo dudas al respecto:
1. No entiendo esta línea.
Código PHP:
 if ($comprueba[0]==0){$avisar="No existe nadie con el  NICK ".$Penitente"en la base de datos<br> La modificación no ha sido procesada<br>";}
else 
$avisar=""//para que pones $comprueba[0] o es que solo comprobaras el 1er. elemento del array que te devuelve mysql_fetch_array 
2. Esto tampoco se que cosa es:
Código PHP:
 mysql_errno($con//quien es $con es algo que retornas en alguna función creada en el archivo donde está la conexión 
3. Una última cosa, en el mensaje que pusiste escribiste esto:
Cita:
error 1054: unknown column tal in 'where clause'
¿quién es tal?

Salu2
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 07/05/2004, 07:21
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Vale. Lo primero, decir que el tema es que no entiendo muy bien como funciona el mysql_fetch_array, con lo cual, es evidente, es MUY MUY posible que no lo use correctamente...
Entonces, hago "comprueba[0]" porque puse en la pregunta SELECT aquello de COUNT(nick), entonces el array solo tendra un elemento no? Aunque, ejem, repito, no entiendo muy bien el funcionamiento de mysql_fetch_array... ¡¡Muy bien por mí!!

Lo segundo, lo de $con. ¿Quien es $con? Claro, es que hice cambios y añadi aquello de "require 'conecta.php'". Antes de hacerlo de esa manera, tenia puesto "$con=mysql_connect(localhost,user,password)". Y al cambiarlo poniendolo aparte (en conecta.php) ya no hay $con que valga, asi que es error mio: SOBRA en el codigo que puse...

Y nada, tercero, ejem... el tal "tal" es el nombre que se en el formulario, en el campo de texto del nick, usease el nombre del usuario.

---------------------
KB.
  #9 (permalink)  
Antiguo 07/05/2004, 19:06
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Bueno

Deberías leer un poco antes de tratar de usar el PHP. Documentarte y ver ejemplos ya hecho para que entiendas bien el uso de las funciones de PHP. La función mysql_fetch_array te devuelve un array con el contenido de la fila por donde se está moviendo en ese momento. Por ejemplo si tu fila es esta:
Código PHP:
 id   producto  precio  cantexis  usuario
  1   Jabón       050         5              1 
entonces sería algo como esto:
Código PHP:
 $resultado mysql_fetch_array($consulta); 
en $res['id'] tendrías almacenado 1, en $res['producto'] tendrías almacenado Jabón y así sucesivamente. Me imagino que $con este declarado en conecta.php como una variable global y que la retornes en alguna función o de lo contrario no puedes usarla en la función mysql_errno que te recomiendo que la cambies a mysql_error() para que veas el texto del mensaje y puedas encontrar los errores más fácil. Lo otro prueba a hacer la consulta de esta forma:
Código PHP:
SELECT COUNT(campoFROM ".$tabla." WHERE nick=".$_POST['Penitente']." 
o de lo contrario revisa bien otras partes del código.

Salu2
__________________
Ing. Reynier Pérez Mira
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 07:20.