Comunidad de diseño web y desarrollo en internet online

substr con variables dinámicas

Citar            
MensajeEscrito el 18 Abr 2017 02:19 am
Hola, necesito actualizar el campo de una tabla, y quiero hacerlo desde una variable que armo, con una substr. Dentro de la substr, a su vez, la longitud la indico con otra variable. Cuando hago el update, me hace la sustitución literalmente, sin tomar el valor indicado de la variable.

Les agradeceré si me pueden orientar, muchas gracias !

$largo= 99;
$cadena_a_grabar = '0' . substr(valida,2,$largo);
// valida es el campo de la tabla que actualizo //
echo $largo; // muestra 99

$sql_query1 ="update nombre_tabla set valida = '$cadena_a_grabar' where bla blabla";
$sql_query_execute = mysql_query($sql_query1,$conn);

No logro hacerlo funcionar, la variable $largo toma el valor 99 dentro de la substr, pero no se actualiza bien en la tabla, es decir, en la tabla el valor que queda es: substr(valida,2,$largo), o sea, no toma el valor de $largo, sino que lo copia literal, sin sustituir.

Muchas gracias por la ayuda !

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2017 01:14 pm
Mirate la ayuda de MySQL, ya que SUBSTR es una función que puedes utilizar directamente en un SQL

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Abr 2017 03:05 pm
Gracias Jorge, no entendí lo de usarla directamente en un SQL (para todo este proceso estoy dentro de un archivo PHP)

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2017 03:24 pm
Algunas operaciones simples se pueden hacer directamente en SQL, veamos lo que haces:

$cadena_a_grabar = '0' . substr(valida,2,$largo);

le agregas un 0 delante y luego tomas desde el caracter 2 al 99 si mal no entiendo, trasladado a SQL esto es

"update nombre_tabla set valida = CONCAT('0', SUBSTRING(valida,2,99) where bla blabla";

Acá estan las funciones de string de MySQL, https://dev.mysql.com/doc/refman/5.7/en/string-functions.html

Luego en cuanto a tu código, esto esta mal

substr(valida,2,$largo)

valida tiene que ser variable, $valida, o parte de un recordset $row['valida'], etc, asi puesto no es nada, y lo toma literal

Jorge
Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Abr 2017 05:04 pm
Ya entiendo, muchas gracias, ahora bien, valida es un campo de la tabla, como levanto su contenido y lo transformo dentro del update ?

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2017 05:44 pm
Para tener el contenido de la columna valida, tienes que hacer un query para consultarlo, si devuelve una sola fila lo recuperas del recordset directamente

Código :

$result = mysql_query("select valida from mitabla");
$row = mysql_fetch_array($result);
$valida = $row['valida'];


Aunque si la modificación es solo agregarle el 0 y sacarle los dos primeros caracteres no es necesario, el SQL que te mostré hace eso

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Abr 2017 05:56 pm
Muchísimas gracias Jorge ,entendí perfectamente como hacerlo, está funcionando.

Por grodrig61

Claber

223 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.