Foros del Web » Programando para Internet » PHP »

Warning composite types consultando a una base de datos Psql

Estas en el tema de Warning composite types consultando a una base de datos Psql en el foro de PHP en Foros del Web. Hola, estoy tratando de replicar el ejercicio de la Wiki para Evitar guardar registros duplicados en la Base de datos, pero con la salvedad de ...
  #1 (permalink)  
Antiguo 15/05/2011, 16:01
 
Fecha de Ingreso: marzo-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 14 años, 1 mes
Puntos: 0
Warning composite types consultando a una base de datos Psql

Hola, estoy tratando de replicar el ejercicio de la Wiki para Evitar guardar registros duplicados en la Base de datos, pero con la salvedad de conectarme a postgresql y no a MySql, la cuestion es que estoy obteniendo este mensaje de error y sinceramente aún no se interpretarlo, si alguien me puede dar una manito lo agradezco en el alma
Código text:
Ver original
  1. Warning: pg_query() [function.pg-query]: Query failed: ERROR: input of anonymous composite types is not implemented LINE 1: SELECT nombre FROM usuarios WHERE usuarios='Maria _H' ^ in /home/victor/php/www/public/basesdedatos/record.php on line 21
  2. Fallo en la consulta para validación

El código que estoy usando es este:


Código PHP:
<?php
/* Para este código (simplemente ilustrativo) suponemos se recive un formulario dónde se ingresó un "usuario" y un "password" para ser agregados en la BD. 
Queremos evitar haya 2 usuarios iguales. 
 
Nuestra Tabla tendría que tener 3 campos: 
                     - usuario (VACHAR) 
                     - password (VACHAR) 
*/ 
 
// Paso 1: Recibimos el formulario: 
$nombre$_POST['nombre']; 
$password1md5($_POST['password1']); // www.php.net/md5 
$password2md5($_POST['password2']);

if (
$password1==$password2){
    
// Obviamente conectamos 
    
$conexion pg_connect("host=localhost port=5432 dbname=tutorial user=postgres password=212530") or die ("Fallo en el establecimiento de la conexión");
 
 
$query="SELECT nombre FROM usuarios WHERE usuarios='$nombre';";
    
// Paso 2: Hacemos la consulta a la Tabla por el usuario 
    
$busquedapg_query($conexion,$query) or
die (
"Fallo en la consulta para validación"); 
 
 
    
// Paso 3: vemos si hubo coincidencias 
    
if(pg_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver 
          // Inciso a:  
          
echo "El nombre de usuario no se encuentra disponible. Por favor intente con otro.<br>"
          echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
    }  
    else { 
      
// Inciso b: 
      
pg_query($conexion"INSERT INTO tabla(usuario, password) VALUES ('$nombre', '$password1')"); 
      echo 
"$user ha sido registrado."
    }

    } 
else {
    echo 
"Lo sentimos, las contraseñas no coinciden";
    echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
    }
?>
  #2 (permalink)  
Antiguo 15/05/2011, 16:10
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Warning composite types consultando a una base de datos Psql

No sé mucho de PG, pero tengo entendido que el punto y coma es para ejecutar múltiples peticiones. Tú solo aplicas una, intenta eliminandolo a ver qué pasa
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 15/05/2011, 17:31
 
Fecha de Ingreso: marzo-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Warning composite types consultando a una base de datos Psql

No, quitando el punto y coma sigo con el mismo error.

Edit: Lo resolví, al parecer es que la tabla debe tener un campo con auto incremento y ser clave, por otro lado tenia un error en la sintaxis. Quedo así.


Código PHP:
Ver original
  1. <?php
  2. /* Para este código (simplemente ilustrativo) suponemos se recive un formulario dónde se ingresó un "usuario" y un "password" para ser agregados en la BD.
  3. Queremos evitar haya 2 usuarios iguales.
  4.  
  5. Nuestra Tabla tendría que tener 3 campos:
  6.                      - usuario (VACHAR)
  7.                      - password (VACHAR)
  8. */
  9.  
  10. // Paso 1: Recibimos el formulario:
  11. $nombre= $_POST['nombre'];
  12. $password1= md5($_POST['password1']); // www.php.net/md5
  13. $password2= md5($_POST['password2']);
  14.  
  15. if ($password1==$password2){
  16.     // Obviamente conectamos
  17.     $conexion = pg_connect("host=localhost port=5432 dbname=tutorial user=postgres password=212530") or die ("Fallo en el establecimiento de la conexión");
  18.  
  19.  $query="select nombre from usuarios where nombre='$nombre'";
  20.     // Paso 2: Hacemos la consulta a la Tabla por el usuario
  21.     $busqueda= pg_query($conexion, $query) or
  22. die ("Fallo en la consulta para validación");
  23.  
  24.  
  25.     // Paso 3: vemos si hubo coincidencias
  26.     if(pg_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver
  27.           // Inciso a:  
  28.           echo "El nombre de usuario no se encuentra disponible. Por favor intente con otro.<br>";
  29.           echo "<a href=\"javascript:history.back()\">Regresar</a>";
  30.     }  
  31.     else {
  32.       // Inciso b:
  33.       pg_query($conexion, "INSERT INTO usuarios(nombre, clave) VALUES ('$nombre', '$password1')");
  34.       echo "$nombre ha sido registrado.";
  35.     }
  36.  
  37.     }
  38. else {
  39.     echo "Lo sentimos, las contraseñas no coinciden";
  40.     echo "<a href=\"javascript:history.back()\">Regresar</a>";
  41.     }
  42. ?>

Última edición por SamuraiBlanco; 15/05/2011 a las 21:27

Etiquetas: postgresql, psql, bases-de-datos
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 15:02.