Foros del Web » Programando para Internet » PHP »

Comprobar si existe un dato en tabla

Estas en el tema de Comprobar si existe un dato en tabla en el foro de PHP en Foros del Web. Hola. Tengo la siguiente consulta pero no se que hago mal que no me devuelve correctamente ningún valor aunque éste exista. Código PHP: mysql_select_db ( ...
  #1 (permalink)  
Antiguo 05/02/2007, 16:36
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Comprobar si existe un dato en tabla

Hola.

Tengo la siguiente consulta pero no se que hago mal que no me devuelve correctamente ningún valor aunque éste exista.

Código PHP:
mysql_select_db($dbname$conn);
$result=mysql_query('select * from mitabla where user=$var_user');
if (
mysql_num_rows($result)==0){
    echo 
'Aqui podré guardar el registro pues no existe';

la variable $var_user contiene un dato pasado por POST

Código PHP:
$var_user=trim($HTTP_POST_VARS['mi_user']); 
Lo que quiero comprobar es si ese valor YA EXISTE en la base de datos y si es así, no me permita guardarlo de nuevo pues ya existe. En caso contrario, si deberá guardarlo.

Espero me podáis indicar donde estoy metiendo la pata.

Gracias.
  #2 (permalink)  
Antiguo 05/02/2007, 16:58
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: Comprobar si existe un dato en tabla

Lo q pasa es q estas usando comillas simples y esta tomando a $var_user como parte de la consulta no como variable.
Para tal caso cambia las comillas simples.
o tambien puedes hacer esto:
$result=mysql_query('select * from mitabla where user=' . $var_user);
  #3 (permalink)  
Antiguo 05/02/2007, 20:40
Avatar de Txane  
Fecha de Ingreso: febrero-2004
Ubicación: Morelia Michoacan
Mensajes: 272
Antigüedad: 20 años, 3 meses
Puntos: 2
Re: Comprobar si existe un dato en tabla

Puede ser un error en la consulta.

Generalmente cuando hago una consulta lo checo asi.

$query="select * from mitabla where user=$var_user";
$result=mysql_query($query) or die("Error en la consulta $query por <br>".mysql_error());

Y eso te imprime la consulta y te da el error de mysql asi no le fallas
  #4 (permalink)  
Antiguo 05/02/2007, 20:56
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Comprobar si existe un dato en tabla

El problema te lo soluciona la respuesta de gerson seguro!, y también haz caso a lo que menciona Txane, para debuguear es una buena manera (solo para debuguear).
Ahora, hago otros aportes para mejorar la cosa...

1- No uses HTTP_POST_VARS, en su lugar usa $_POST[""]
2- Como bien dice gerson, no uses querys entre ' sino entre ", verás por que mas adelante.
3- Por lo menos, como básico, escapa este input con addslashes()
fuerza las variables a su tipo, y encierra la misma entre ' dentro de la consulta (por eso la aclaración en el punto 2, puedes usar ' para encerrar el query, pero deberás escapar mucho y quedará no muy prolijo que digamos), quedándote algo como:
Código PHP:
...
$varStr = ! empty( $_POST["varStr"] ) ? addslashes$_POST["varStr"] ) : '';
$varInt = ! empty( $_POST["varInt"] ) ? intval$_POST["varInt"] ) : 0;
$sql "Select * from tbl where dato = '$varStr' and datoInt = '$varInt' ";
... 
Espero te aclare las cosas.

Suerte.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 07/02/2007, 16:06
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Comprobar si existe un dato en tabla

Ok. Me he quedado con la idea, aunque ya me he perdido con el addslashes() (miraré en la ayuda de PHP) y lo del tema de usar $_POST en lugar de HTTP_POST_VARS no lo pillo muy bien.

Que yo sepa $_POST es para versiones PHP superiores a la 4.3.1.0 creo, entonces si por casualidad el servidor corre con una versión anterior, daría errores con $_POST mientras que la otra opción es admitida por todas las versiones de PHP, ¿no es así? Vamos, pregunto porque no estoy muy seguro si es así la cosa o ya ha cambiado en algo.

Gracias por vuestra ayuda.
  #6 (permalink)  
Antiguo 08/02/2007, 07:45
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Comprobar si existe un dato en tabla

Creo que acá tenés todo lo necesario para entenderlo

Cualquier cosa pregunta!
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 12/02/2007, 08:37
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Comprobar si existe un dato en tabla

Hola.

He probado lo siguiente:

Código PHP:
$sql "select * from tgusuario where usuario=$var_user";
$result=mysql_query($sql) or die("Error en la consulta $sql por <br>".mysql_error()); 
Y el error que me imprime es este:

Código PHP:
Error en la consulta select from tgusuario where usuario=admin por 
La columna 
'admin' en where clause es desconocida 
Lo que pretendo es comprobar si el usuario introducido existe y en tal caso mostrarme un mensaje diciendo YA EXISTE EL USUARIO, en caso contrario, que me lo cree en la tabla y sin embargo parece ser que me está comprobando si existe el nombre de la columna, no el dato.

¿Donde está el fallo?
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 09:36.