vfp y mysql

06/11/2004 - 09:10 por sakuragi | Informe spam
hola que tal


toy hasiendo un abc vfp y mysql,en el boton de modificar tengo el
siguiente codigo:

a = sqlconnect ('prueva_2','root','')
?SQLEXEC(a,"update clientes set
nombre=?thisform.nom.value,apellido=?thisform.ape.value ")
SQLDISCONNECT(a)


el problema es que si me modifica pero toda la columna completa yo solo
quiero modificar los dos que estan en el text de la aplicacion esos dos
campos nomas.

alguna sujerencia?

de hante manos gracias

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa

Preguntas similare

Leer las respuestas

#1 Alex Feldstein
06/11/2004 - 14:58 | Informe spam
On Sat, 06 Nov 2004 00:10:08 -0800, "sakuragi"
wrote:

toy hasiendo un abc vfp y mysql,en el boton de modificar tengo el
siguiente codigo:

a = sqlconnect ('prueva_2','root','')
?SQLEXEC(a,"update clientes set
nombre=?thisform.nom.value,apellido=?thisform.ape.value ")
SQLDISCONNECT(a)


el problema es que si me modifica pero toda la columna completa yo solo
quiero modificar los dos que estan en el text de la aplicacion esos dos
campos nomas.




Debes poner una condición de que registro cambiar.

Update clientes
set nombre=cNombre
where codigo_cliente='123'

Supongo que el ejemplo que has dado está simplificado para muestra.
Si no es asi, y es código real de producción, este tiene varios
problemas.

a = sqlconnect ('prueva_2','root','')



- estas conectándote como root y sin password. Es un agujero de
seguridad tremendo tener una cuenta administrativa sin contraseña.

- estas aparentemente usando una cuenta de administrador para acceso
diario de programa. Esto debe hacerse siempre con una cuenta de
usuario con menos permisos que un admnistrador. Es mucho menor el daño
que se pueda causar al sistema en caso de error o ataque malicioso.

- no estas verificando si la conexión se ha logrado antes de continuar
con el pograma. Este explotará si no logras conectarte.

- estas guardando el Handle de conexión en un avariable "a". En Visual
FoxPro nunca debes usar variables con nombre "a-j" y "m". Estas son
palabras reservadas (por cuestiones históricas del lenguaje). Usar ese
nombre para variables sólo te traerá problemas.

?SQLEXEC(a,"update clientes set
nombre=?thisform.nom.value,apellido=?thisform.ape.value ")



Aparte de la falta de una condición para limitar el alcance (scope),
ya mencionado:

- Estas imprimiendo a pantalla el resultado de SQLEXEC(). Debes
asignarlo a una variable y verificar el resultado. Si este es negativo
(-1) eso indica una condición de error.

- Estas usando el contenido de un control de pantalla (value). Eso
tiene un grave error de seguridad. Nunca debes pasar datos a BD
directamente del GUI sin verificación y limpieza. El código usado es
muy susceptible a inyección de código malicioso (SQL Injection).

Disculpa la larga explicación, pero es muy importante hoy dia (y cada
vez mas) que seamos responsables como profesionales por la seguridad
de los datos de nuestros clientes. Debemos crear programas de calidad.
Calidad implica tener seguridad incorporada desde el diseño.
Especialmente en lo que se refiera a proteger la integridad de datos.

Espero te sea de ayuda.



Alex Feldstein
________________________________
Microsoft Visual FoxPro MVP
Please respond in the public groups so that everybody
can benefit from the exchange.
Favor de responder en los foros públicos asi todos se benefician.
(address munged with ROT-13)

Blog: http://www.bloglines.com/blog/AlexFeldstein
Website: http://feldstein.net
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida