Foros del Web » Programación para mayores de 30 ;) » Programación General »

conexion con mysql

Estas en el tema de conexion con mysql en el foro de Programación General en Foros del Web. Hola Estoy intentado realizar un update de una fecha con perl y mysql pero no hay forma, no hace nada. Por favor alguien puede indicarme ...
  #1 (permalink)  
Antiguo 12/05/2007, 11:53
 
Fecha de Ingreso: julio-2005
Mensajes: 40
Antigüedad: 18 años, 9 meses
Puntos: 0
conexion con mysql

Hola

Estoy intentado realizar un update de una fecha con perl y mysql pero no hay forma, no hace nada.

Por favor alguien puede indicarme si hay algo mal en esto:

$dbh = ConectarDB->connect();
$sth = $dbh->prepare('UPDATE $variable SET c1=? WHERE c2=? AND c3=?');
$sth->execute($v1,$v2,$v3);

o alguna forma para detectar cual sea el error... El caso es que la página de resultados no muestra error alguno, he impreso todos los valores y variables y se muestran en la página siguiente pero el update no se hace.

Gracias por la ayuda
  #2 (permalink)  
Antiguo 12/05/2007, 14:49
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Re: conexion con mysql

El problema es la comilla simple (') dentro del prepare. Cámbiala a doble ("). De esa manera se interpolará el valor de la $variable dentro de la sentencia sql. Con la comilla simple estás enviando '$variable' como nombre de la tabla a actualizar, y no creo que tengas ninguna tabla en la base de datos que se llame así.
  #3 (permalink)  
Antiguo 12/05/2007, 18:21
 
Fecha de Ingreso: julio-2005
Mensajes: 40
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: conexion con mysql

Realmente si, $variable es una tabla..

Es decir:


sth = $dbh->prepare('UPDATE $variable SET c1=? WHERE c2=? AND c3=?');

Lo que quiero es que en la tabla $variable se actualice el valor de c1 (que es una fecha) cuando coincidan c2 y c3

Gracias
  #4 (permalink)  
Antiguo 13/05/2007, 08:46
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Re: conexion con mysql

¿Tienes una tabla en MySQL que se llama '$variable'? Pues es la primera vez que lo veo.

Sí que está permitido que los nombres de las tablas tengan caracteres especiales, como el '_' y el '$', pero como el símbolo del dolar se usa mucho en lenguajes de programación, se deja su uso para las variables del programa, porque de usarlo como nombre en los datos estarás obligado a 'escapar' el símbolo '$' en cada ocasión que tengas que construir la sql de forma dinámica.
  #5 (permalink)  
Antiguo 14/05/2007, 01:42
 
Fecha de Ingreso: enero-2006
Mensajes: 71
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: conexion con mysql

Bueno, la tabla no se llama $variable... si no que $variable recoje un valor que es el de la tabla... En la base de datos hay unas 70 tablas... en cada caso $variable tendrá un valor...
  #6 (permalink)  
Antiguo 14/05/2007, 06:05
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Re: conexion con mysql

Pues eso quería decir...

Nada, nada... el problema es el entrecomillado, lo que he dicho antes.
  #7 (permalink)  
Antiguo 03/06/2007, 10:07
Avatar de argalpalo  
Fecha de Ingreso: noviembre-2006
Mensajes: 35
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: conexion con mysql

Cual es la mejor sentencia de Mysql para una busqueda. La quiero hacer en perl, en este momento utilizo esta

Código:
SELECT * FROM (tabla) WHERE (nombre LIKE 'nombre%') AND (nombre LIKE 'nombre%')
Ahi una forma mas sintactica de hacer lo mismo, alguna sentencia especifica??
GRacias
  #8 (permalink)  
Antiguo 04/06/2007, 02:22
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Re: conexion con mysql

La condición nombre LIKE 'nombre%' está repetido dos veces. Te sobra uno. Quedaría:

SELECT * FROM tabla WHERE nombre LIKE 'nombre%'
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 08:50.