• Publicidad

Como conecto un servidor web con uno de bases de datos

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Notapor Juan JOse » 2006-10-09 17:18 @763

Saludos, quite ya el espacio en blanco y nada, el problema es q cuando abro este programa con el navegador, yo quisiera la consulta a la bases de datos, pero no la hace, no hay problema cuando la base esta en la misma maquina donde tengo el servidor web, pero esta base que quiero consultar en ese programa esta en otra maquina, no se si haya alguna restriccion, como ya mensione, si corro el programa con la instruccion perl, si se conecta bien a la base de datos, ojala tengan alguna idea.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Publicidad

Notapor explorer » 2006-10-09 18:34 @815

Si, has quitado el espacio en blanco. ¿Pero has puesto como primera línea a #!/usr/bin/perl? Eso es lo importante.

Para comprobar que realmente es un script perl y está bien puesta la cabecera, en vez de ejecutarlo con 'perl patito.pl' hazlo con 'patito.pl'.

¿Qué es lo que sale en los registros de actividad del servidor web (los ficheros log) a la hora de ejecutar el programa? Ahí tendrás muchas pistas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2006-10-09 18:35 @816

Si la base de datos está en otra máquina, quizás tengas que poner el valor 'Host' dentro del 'connect' para que DBI sepa dónde está la base de datos.

Y, naturalmente, el motor de base de datos Informix debe permitir conectarse desde fuera de su máquina.

Y, claro, los puertos de conexión no deben de estar filtrados ni en la máquina de origen ni en la de destino.
Última edición por explorer el 2006-10-09 18:38 @818, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2006-10-09 18:37 @817

No estarás abriendo el programa con un browser como si fuera un HTML, verdad?
Espero que no, porque si es así, je je núnca funcinara.
El servidor ejecuta el script y retorna la salida del programa.
Buno no creo que eso sea pero como se dice por aquí "posr si las moscas".
Algún error que ver?
Viste los logs del servidor?
Por cierto en esta linea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $dbh = DBI->connect('dbi:Informix:nomina@basedatos','pato','pato')or die print "No hay conexion con la base<br>";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Quita el print, no hace falta.
Ejecuta
Código: Seleccionar todo
perl  -Mdiagnostics -wc patito.pl

A ver que dice.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Juan JOse » 2006-10-10 15:24 @683

Saludos:

Uffffff, el problema esta solucionado, muchas gracias, resulta q cuando corria el programa desde mi usuario el programa se conectaba correctamente, esto porque tiene el profile configurado a un sqlhosts donde esta configuradas las bases a usar, pero cuando se corre desde un navegador, utiliza el usuario del servidor web, y este tenia otro archivo sqlhosts donde no estaba configurada la base de datos a utilizar, muchas gracias, este foro fue de gran ayuda, estare en contacto, jaja, seguramente con mas problemas y dudas.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Notapor Juan JOse » 2006-10-12 14:30 @646

Saludos:

Tengo ahora un problema al escribir un Query, quiero ejecutar el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
SELECT count(*) FROM empleados WHERE rfc=algo AND nombre LIKE 'paterno%materno'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero necesito que paterno y materno sean variables. Intenté el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
47: $prep="select count(*) from empleados where  rfc=? and nombre like    \'?\%?\' ";
48: my $sth=$dbh prepare($prep);
49: $sth->execute($rfc,$paterno,$materno);
50: $n_registros = $sth->fetchrow_array();
51: print "$n_registros registros encontrados";
52: $sth->finish;  
95: if($n_registros eq "0" ){
105: if($n_registros eq "1" )
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Y me salen los siguientes mensajes de error:

Código: Seleccionar todo
[Thu Oct 12 15:15:05 2006] [error] [client xxx.xxx.xxx.xxx] DBD::Informix::st execute failed: called with 3 bind variables when 1 are needed at /var/www/cgi-bin/sueldo.pl line 49., referer: http://xxx.xxx.xxx.xxx/cgi-bin/sueldo.pl
[Thu Oct 12 15:15:05 2006] [error] [client xxx.xxx.xxx.xxx] DBD::Informix::st fetchrow_array failed: SQL: -400: Fetch attempted on unopen cursor. at /var/www/cgi-bin/sueldo.pl line 50., referer: http://xxx.xxx.xxx.xxx/cgi-bin/sueldo.pl
[Thu Oct 12 15:15:05 2006] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in concatenation (.) or string at /var/www/cgi-bin/sueldo.pl line 51., referer: http://xxx.xxx.xxx.xxx/cgi-bin/sueldo.pl
[Thu Oct 12 15:15:05 2006] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in string eq at /var/www/cgi-bin/sueldo.pl line 95., referer: http://xxx.xxx.xxx.xxx/cgi-bin/sueldo.pl
[Thu Oct 12 15:15:05 2006] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in string eq at /var/www/cgi-bin/sueldo_base1.pl line 105., referer: http://xxx.xxx.xxx.xxx/cgi-bin/sueldo.pl


Ojalá alguno de uds pueda ayudarme, aún me falta mucho por aprender de Perl. Gracias nuevamente.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Notapor explorer » 2006-10-12 19:29 @853

Podrías probar a crear la sentencia SQL antes de 'prepararla':

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# ...
$prep = "select count(*) from empleados where  rfc=? and nombre like \'$paterno%$materno\'";
my $sth = $dbh->prepare( $prep );
$sth->execute( $rfc );
$n_registros = $sth->fetchrow_array();
# ...
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No deja de ser una chapucilla, porque además no contaríamos con el trabajo de escape de caracteres que hace execute, pero para el caso de que $paterno y $materno sean strings 'normales', se podría intentar algo así.

Quizás esto otro funcione (sacado del manual del DBI):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$prep = "select count(*) from empleados where  rfc=? and nombre like ?";
my $sth = $dbh->prepare( $prep );
$sth->execute( $rfc, "$paterno%$materno" );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Juan JOse » 2006-10-13 14:32 @647

Saludos:

Se resolvio el problema escibiendo la sentencia como me recomendaste

$prep = "select count(*) from cheque where rfc=? and nombre like \"$paterno\%$materno\%\" ";
my $sth = $dbh->prepare($prep);
$sth->execute($rfc);

Gracias.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Anterior

Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados