SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: RadicalEd en Miércoles 20 de Diciembre de 2006, 18:17

Título: Insercción En Postgres
Publicado por: RadicalEd en Miércoles 20 de Diciembre de 2006, 18:17
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! 
Título: Re: Insercción En Postgres
Publicado por: su - en Miércoles 20 de Diciembre de 2006, 21:07
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:
Título: Re: Insercción En Postgres
Publicado por: ArKaNtOs en Miércoles 20 de Diciembre de 2006, 21:24
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 ;)
Título: Re: Insercción En Postgres
Publicado por: RadicalEd en Miércoles 20 de Diciembre de 2006, 22:57
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!
Título: Re: Insercción En Postgres
Publicado por: su - en Jueves 21 de Diciembre de 2006, 00:12
http://www.php.net/manual/en/function.pg-execute.php (http://www.php.net/manual/en/function.pg-execute.php)

 :whistling:
Título: Re: Insercción En Postgres
Publicado por: ArKaNtOs en Jueves 21 de Diciembre de 2006, 00:24
Que tipo de dato es teléfono?
sino es numérico esta mal realizado el query, si es string, debe ir entre ''
Título: Re: Insercción En Postgres
Publicado por: su - en Jueves 21 de Diciembre de 2006, 00:29
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  :(
Título: Re: Insercción En Postgres
Publicado por: ArKaNtOs en Jueves 21 de Diciembre de 2006, 00:50
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
Título: Re: Insercción En Postgres
Publicado por: su - en Jueves 21 de Diciembre de 2006, 02:25
Aaahhhh! entonces creo que coneso tendra Radical  :lol:
Bueno mejor no digo nada mas  :scream:
Título: Re: Insercción En Postgres
Publicado por: RadicalEd en Jueves 21 de Diciembre de 2006, 16:51
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!
Título: Re: Insercción En Postgres
Publicado por: ArKaNtOs en Viernes 22 de Diciembre de 2006, 02:37
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?
Título: Re: Insercción En Postgres
Publicado por: javier3 en Viernes 22 de Diciembre de 2006, 04:32
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:
Título: Re: Insercción En Postgres
Publicado por: RadicalEd en Viernes 22 de Diciembre de 2006, 14:15
 :kicking:  :kicking:  :kicking: Gracias javier3 :kicking:  :kicking:  :kicking: