Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2005, 10:15
Bocaz
 
Fecha de Ingreso: octubre-2005
Mensajes: 95
Antigüedad: 18 años, 6 meses
Puntos: 1
Preguntar si existe un registro antes de insertar

Hola amigos..
tengo un problemilla...al hacer una consulta SQL preguntando por la existencia de un registro filtrando por 2 campos...se produce un error al querer insertar el nuevo registro si mysql_num_rows arroja 0.
He intentado de todo y no logro hacer que funcione...la verdad e que he quedado pegado con este código...les ruego su ayuda.
Este es el Código del INFIERNO:

Código PHP:
function AgregarCliente($Variables)    
{

    
$valores explode(",",$Variables);
    
    
$valores[0] = GetSQLValueString($valores[0],"text");
    
$valores[1] = GetSQLValueString($valores[1],"text");
    
$valores[2] = GetSQLValueString($valores[2],"text");
    
$valores[3] = GetSQLValueString($valores[3],"text");
    
$valores[4] = GetSQLValueString($valores[4],"int");
    
$valores[5] = GetSQLValueString($valores[5],"text");
    
$valores[6] = GetSQLValueString($valores[6],"text");
    
$valores[7] = GetSQLValueString($valores[7],"text");
    
$valores[8] = GetSQLValueString($valores[8],"text");
    
$valores[9] = GetSQLValueString($valores[9],"int");    

    
$lnk Conectar();
    echo 
"<span class='TextoNormal'>-> Verificando si existe el cliente.</span><br>";
    
$verificar mysql_query("SELECT * FROM clientes WHERE cli_rut=$valores[0] or cli_nom=$valores[1]",$lnk);
    if(
mysql_num_rows($verificar)>=1)
    {
         echo 
"<span class='TextoNormal'>-> El Cliente ya existe.</span><br>";
         
mysql_free_result($verificar);
         
mysql_close($lnk);
         return 
false;
    }
    else
    {
         echo 
"<span class='TextoNormal'>-> El Cliente no existe, se procede a su creación...</span><br>";    
            
mysql_free_result($verificar);
         
$agregar mysql_query("INSERT INTO clientes (cli_cod, cli_rut, cli_nom, cli_gir, cli_dir, cli_ciu_cod, cli_fono1, cli_fono2, cli_email, cli_url, cli_tipcli_cod) VALUES ('',$valores[0],$valores[1],$valores[2],$valores[3],$valores[4],$valores[5],$valores[6],$valores[7],$valores[8],$valores[9])",$lnk);
         if(
$agregar == 1)
         {
             echo 
"<span class='TextoNormal'>-> Registro exitoso del Cliente.</span><br>";    
             
mysql_close($lnk);
            return 
true;
         }
         else
         {
             echo 
"<span class='TextoNormal'>-> No se ha podido registrar al Cliente. Si el problema persiste consulte con el administrador de red.</span><br>";    
             
mysql_close($lnk);
            return 
"error";             
         }
    }

Se supone que le paso las variables en un string a la funcion, la cual las separa, toma 2 de ellas para preguntar en el sql si acaso existe un registro que iguale al nombre del cliente que se quiera ingresar o al rut. Ovbiamente si la consulta devuelve 0, no existe el registro y puedo insertar.

E AQUI EL PROBLEMA:....cuando los registro ya existen, no hay problema...el script me arroja que el registro ya existe y no inserta el nuevo registro. Pero A VECES....( la mayor parte de las veces ) cuando el registro no existe, el script me arroja que el registro si existe, y de igual forma inserta el nuevo registro....

A alguien se le ocurre que cosa estoy haciendo mal.....ya llevo varios días tratando de solucionar el problema pero no he podido... Desde ya muchas gracias..