• Domingo 22 de Diciembre de 2024, 19:33

Autor Tema:  Insercción En Postgres  (Leído 5529 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Insercción En Postgres
« en: Miércoles 20 de Diciembre de 2006, 18:17 »
0
Hola chicos de SoloCodigo, por fin pude conectar el PHP con Postgres (eso creo :unsure: ), pero a la hora de revisar la DB no me muestra los datos insertados, pero si gasta una fila.

Aquí dejo el código.

<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><HTML>
<BODY>
<?PHP
// Conexión a PostgreSQL.
$db = pg_connect("user=postgres dbname=agenda") or die ("No se puede conectar");

if( !$db )
{
echo "No pudo realizar la conexión!";
exit;
}

// Crea una sentencia SQL para insertar los datos a la tabla.
$query = "INSERT INTO direcciones VALUES ( '$nombre', '$telefono', '$correo' );";

// Conexión a la base de datos Agenda; Corre la sentencia SQL.
$result = pg_Exec( $db, $query );

if( !$result )
{
echo "Resultado no regresado!";
exit;
}

// Obtiene los resultados de la sentencia SQL.
$rows = pg_NumRows( $result );

if( $rows = 0 )
{
echo "Fallo en la inserción.";
exit;
}

// Obtiene el registro (fila) que acaba de ser agregada.
$query = "SELECT * FROM direcciones WHERE \"name\" = '$name';";

$result = pg_Exec( $db, $query );
$row = pg_Fetch_Row( $result, 0 );

$nameResult = $row[0];
$phoneResult = $row[1];
$emailResult = $row[2];

echo "Nombre = $nameResult<BR>";
echo "Telefono = $phoneResult<BR>";
echo "Correo = $emailResult<BR>";

pg_Close( $db );
echo "<BR>Datos Agregados!";
?>

</BODY>
</HTML>
<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
Este error me muestra:
Citar
Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: no existe la columna "name" in /var/www/postgres/add-entry.php on line 37

Warning: pg_fetch_row(): supplied argument is not a valid PostgreSQL result resource in /var/www/postgres/add-entry.php on line 38
Nombre =
Telefono =
Correo =

Datos Agregados! 
El pasado son solo recuerdos, el futuro son solo sueños

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #1 en: Miércoles 20 de Diciembre de 2006, 21:07 »
0
Código: Text
  1. &#036;query = &#34;SELECT * FROM direcciones WHERE &#092;&#34;name&#092;&#34; = '&#036;name';&#34;;
  2.  
:huh:  Y esto? '$name' = '$name' no deberia ser \"name\" = \'$name\' don de $name tiene un valor determinado? :blink:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #2 en: Miércoles 20 de Diciembre de 2006, 21:24 »
0
creo que el mismo error te menciona que name no existe, ahora nunca he usado postgres, pero esto \"name\" para que?, no solo deberia ir name?, ahora cual es el contenido de $name al parecer no tiene nada, a menos que sea una variable get, donde seria mas apropiado hacer:
$name=$_GET['name']; antes no?
o hacer:
$query = "SELECT * FROM direcciones WHERE name = '$_GET[name]';";

en todo caso avisas ;)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #3 en: Miércoles 20 de Diciembre de 2006, 22:57 »
0
Sorry, sorry, es que he copiado el código anterior, gracias por los aportes, aquí está arreglado ya un trol, y me saca un error.
Código: Text
  1. &#60;HTML&#62;
  2. &#60;BODY&#62;
  3. &#60;?PHP
  4. echo &#036;nombre=&#036;_GET['Nombre'].&#34;&#60;BR&#62;&#34;;
  5. echo &#036;Telefono=&#036;_GET['Telefono'].&#34;&#60;BR&#62;&#34;;
  6. echo &#036;Correo=&#036;_GET['Correo'].&#34;&#60;BR&#62;&#34;;
  7. // Conexión a PostgreSQL.
  8. echo &#036;db = pg_connect(&#34;user=postgres dbname=agenda&#34;) or die (&#34;No se puede conectar&#34;);
  9.  
  10. if( !&#036;db )
  11. {
  12. echo &#34;No pudo realizar la conexión!&#34;;
  13. exit;
  14. }
  15.  
  16. // Crea una sentencia SQL para insertar los datos a la tabla.
  17. //&#036;query = &#34;INSERT INTO direccion (nombre, telefono, correo) VALUES ( '&#036;Nombre', '&#036;Telefono', '&#036;Correo' );&#34;;
  18. &#036;query = &#34;INSERT INTO direccion (nombre, telefono, correo) VALUES ( '&#036;Nombre', &#036;Telefono, '&#036;Correo' );&#34;;
  19.  
  20. // Conexión a la base de datos Agenda; Corre la sentencia SQL.
  21. &#036;result = pg_exec( &#036;db, &#036;query );
  22.  
  23. if( !&#036;result )
  24. {
  25. echo &#34;Resultado no regresado!&#34;;
  26. exit;
  27. }
  28.  
  29. // Obtiene los resultados de la sentencia SQL.
  30. &#036;rows = pg_NumRows( &#036;result );
  31.  
  32. if( &#036;rows = 0 )
  33. {
  34. echo &#34;Fallo en la inserción.&#34;;
  35. exit;
  36. }
  37.  
  38. // Obtiene el registro (fila) que acaba de ser agregada.
  39. &#036;query = &#34;SELECT * FROM direccion WHERE &#092;&#34;nombre&#092;&#34; = '&#036;Nombre';&#34;;
  40.  
  41. &#036;result = pg_Exec( &#036;db, &#036;query );
  42. &#036;row = pg_Fetch_Row( &#036;result, 0 );
  43.  
  44. &#036;nameResult = &#036;row[0];
  45. &#036;phoneResult = &#036;row[1];
  46. &#036;emailResult = &#036;row[2];
  47.  
  48. echo &#34;Nombre = &#036;nameResult&#60;BR&#62;&#34;;
  49. echo &#34;Telefono = &#036;phoneResult&#60;BR&#62;&#34;;
  50. echo &#34;Correo = &#036;emailResult&#60;BR&#62;&#34;;
  51.  
  52. pg_Close( &#036;db );
  53. echo &#34;&#60;BR&#62;Datos Agregados!&#34;;
  54. ?&#62;
  55.  
  56. &#60;/BODY&#62;
  57. &#60;/HTML&#62;
  58.  
Citar
RadicalEd
123456
lambda@lero.com
1
Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: syntax error en o cerca de ">" at character 72 in /var/www/postgres/add-entry.php on line 21
Resultado no regresado!
El pasado son solo recuerdos, el futuro son solo sueños

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #4 en: Jueves 21 de Diciembre de 2006, 00:12 »
0
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #5 en: Jueves 21 de Diciembre de 2006, 00:24 »
0
Que tipo de dato es teléfono?
sino es numérico esta mal realizado el query, si es string, debe ir entre ''

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #6 en: Jueves 21 de Diciembre de 2006, 00:29 »
0
Cita de: "ArKaNtOs"
Que tipo de dato es teléfono?
sino es numérico esta mal realizado el query, si es string, debe ir entre ''
 :o Ya se poruqe no me gusta PHP
¿De verdad eso importa?
Y yo que pense que era  pg_prepare debe ir antes  :unsure: y que execute se hace diferente  :rolleyes:

Creo que he creado mas confusion que aportes  :(
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #7 en: Jueves 21 de Diciembre de 2006, 00:50 »
0
es que te estas confundiendo con el uso de pg_execute, no es lo mismo que pg_exec, pg_exec, es como pg_query que ejecuta un query y pg_execute sirve para ejecutar un query con parametros, en el caso del tipo de datos si importa porque le dices a la base de datos que tipo de datos le envías, si lo pones entre '' es un string, si las quitas es un numero

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #8 en: Jueves 21 de Diciembre de 2006, 02:25 »
0
Aaahhhh! entonces creo que coneso tendra Radical  :lol:
Bueno mejor no digo nada mas  :scream:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #9 en: Jueves 21 de Diciembre de 2006, 16:51 »
0
mmm Gracias chavos, gracias.

A ver, telefono es integer; me di cuenta  de que pg_exec() es de php 5 y yo estoy utilizando el php 4, por lo tanto cambie la función por pg_query, sin embargo sigue sacando el mismo error.

Citar
RadicalEd
123456
lambda@lero.com
1
Si se pudo conectar

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error en o cerca de ">" at character 45 in /var/www/postgres/add-entry.php on line 28
Resultado no regresado!
El pasado son solo recuerdos, el futuro son solo sueños

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #10 en: Viernes 22 de Diciembre de 2006, 02:37 »
0
Mencionabas que a la hora de ejecutar el query si realiza la inserción, de casualidad también inserta el teléfono? o inserta los tres campos?

javier3

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #11 en: Viernes 22 de Diciembre de 2006, 04:32 »
0
hola RadicalEd
tienes dos errores graves que debes tener muy en cuenta en php
te los digo ahora

Código: Text
  1.  
  2. echo &#036;nombre=&#036;_GET['Nombre'].&#34;&#60;BR&#62;&#34;;
  3. echo &#036;Telefono=&#036;_GET['Telefono'].&#34;&#60;BR&#62;&#34;;
  4. echo &#036;Correo=&#036;_GET['Correo'].&#34;&#60;BR&#62;&#34;;
  5.  
  6.  
Fijate la primera variable esta todo en minuscula.

Código: Text
  1.  
  2. // Crea una sentencia SQL para insertar los datos a la tabla.
  3. //&#036;query = &#34;INSERT INTO direccion (nombre, telefono, correo) VALUES ( '&#036;Nombre', '&#036;Telefono', '&#036;Correo' );&#34;;
  4. &#036;query = &#34;INSERT INTO direccion (nombre, telefono, correo) VALUES ( '&#036;Nombre', &#036;Telefono, '&#036;Correo' );&#34;;
  5.  
  6.  

Cuando haces el insert into esta llamando a una variable $Nombre
ahi estas agarrando la variable enviada por la URL y no la variable que has asignado.
ese es un primer error sabes que en php si importa los nombres de variables identifica de minusculas y mayusculas, pero esto no es lo que te ocasiona el error.

lo que te ocaciona el Error realmente es que tu estas concatenando a los valores de la Variable $_GET['Nombre']."<BR>" un salto de linea.
Código: Text
  1.  
  2. echo &#036;nombre=&#036;_GET['Nombre'].&#34;&#60;BR&#62;&#34;;
  3. echo &#036;Telefono=&#036;_GET['Telefono'].&#34;&#60;BR&#62;&#34;;
  4. echo &#036;Correo=&#036;_GET['Correo'].&#34;&#60;BR&#62;&#34;;
  5.  
  6.  

estos saltos de linea son los que te estan ocasionando el error
seguro te olvidastes de sacarlos.
ahora bien por lo demas tu codigo esta bien
uuhh no necesitas de esto en tu select  \"nombre\"
pero igual funciona

fijate los cambios aqui

Código: Text
  1.  
  2. &#60;HTML&#62;
  3. &#60;BODY&#62;
  4. &#60;?PHP
  5. &#036;Nombre = &#036;_GET['Nombre'];
  6. &#036;Telefono = &#036;_GET['Telefono'];
  7. &#036;Correo = &#036;_GET['Correo'];
  8. // Conexión a PostgreSQL.
  9. &#036;db = pg_connect(&#34;host=localhost port=5432 dbname=agenda user=postgres password=123456&#34;) or die (&#34;No se puede conectar&#34;);
  10.  
  11. if( !&#036;db )
  12. {
  13. echo &#34;No pudo realizar la conexión!&#34;;
  14. exit;
  15. }
  16.  
  17. // Crea una sentencia SQL para insertar los datos a la tabla.
  18. //&#036;query = &#34;INSERT INTO direccion (nombre, telefono, correo) VALUES ( '&#036;Nombre', '&#036;Telefono', '&#036;Correo' );&#34;;
  19. &#036;query = &#34;INSERT INTO direccion (nombre, telefono, correo) VALUES ( '&#036;Nombre', &#036;Telefono, '&#036;Correo' );&#34;;
  20.  
  21. // Conexión a la base de datos Agenda; Corre la sentencia SQL.
  22. &#036;result = pg_exec( &#036;db, &#036;query );
  23.  
  24. if( !&#036;result )
  25. {
  26. echo &#34;Resultado no regresado!&#34;;
  27. exit;
  28. }
  29.  
  30. // Obtiene los resultados de la sentencia SQL.
  31. &#036;rows = pg_NumRows( &#036;result );
  32.  
  33. if( &#036;rows = 0 )
  34. {
  35. echo &#34;Fallo en la inserción.&#34;;
  36. exit;
  37. }
  38.  
  39. // Obtiene el registro (fila) que acaba de ser agregada.
  40. &#036;query = &#34;SELECT * FROM direccion WHERE &#092;&#34;nombre&#092;&#34; = '&#036;Nombre';&#34;;
  41.  
  42. &#036;result = pg_Exec( &#036;db, &#036;query );
  43. &#036;row = pg_Fetch_Row( &#036;result, 0 );
  44.  
  45. &#036;nameResult = &#036;row[0];
  46. &#036;phoneResult = &#036;row[1];
  47. &#036;emailResult = &#036;row[2];
  48.  
  49. echo &#34;Nombre = &#036;nameResult&#60;BR&#62;&#34;;
  50. echo &#34;Telefono = &#036;phoneResult&#60;BR&#62;&#34;;
  51. echo &#34;Correo = &#036;emailResult&#60;BR&#62;&#34;;
  52.  
  53. pg_Close( &#036;db );
  54. echo &#34;&#60;BR&#62;Datos Agregados!&#34;;
  55. ?&#62;
  56. &#60;/BODY&#62;
  57. &#60;/HTML&#62;
  58.  
  59.  
:comp:
Javier Bermúdez Tito

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Insercción En Postgres
« Respuesta #12 en: Viernes 22 de Diciembre de 2006, 14:15 »
0
:kicking:  :kicking:  :kicking: Gracias javier3 :kicking:  :kicking:  :kicking:
El pasado son solo recuerdos, el futuro son solo sueños