Categoría wiki: PHP
bueno la consulta es la siguiente:
mysql_query("BEGIN TRY INSERT INTO usuario (id_usuario,nombre,correo,pasword) values('$posision','".$_POST['NOMBRE']."','".$_POST['CORREO']."','".$_POST['PASWORD']."')END TRY BEGIN CATCH UPDATE TABLA SET nombre='".$_POST['NOMBRE']."',correo='".$_POST['CORREO']."',pasword='".$_POST['PASWORD']."' WHERE nombre='estedatoestabasio' END CATCH");
lo que quiero que realice es que actualise un campo en la tabla donde el campo nombre =estedatoestabasio si no que inserte los nuevos datos.
no se mysql soporte este tipo de consultas ya leei y no encuantro nada
gracias por su ayuda de antemano |
Dejame ver si entendí estas tratando de actualizar un campo, si no esta que lo inserte?
A mi parecer sería mas fácil de hacer con un case desde algun lenguaje de programación y dado que si primero tienes que hacer un update, no seria logico que ya existe un id del usuario, tambien acerca de lo anterior para que buscas por el nombre, tienes la condicion WHERE nombre='algo', viendo como insertas en tu tabla al parecer utilizas un id, por que no lo haces por ese.
Espero te sirva mi respesta, si no con gusto te podria ayudar en algo mas |
Opino como rrcfesc,
mejor comparar mediante un CASE o un IF antes de realizar la consulta y realizar la consulta con UPDATE o INSERT segun sea el caso.
Suerte! |
Si lo que quieres es que inserte un nuevo registro, pero si este existe solo lo actualice, yo te aconsejaría usar el comando INSERT con ON DUPLICATE KEY UPDATE ejemplo
INSERT INTO
tbNombredelatabla
(campo1,campo2,campo4)
VALUES
(valor1,valor2,valor3)
ON DUPLICATE KEY UPDATE
campo1=valor1
campo2=valor2
campo3=valor3
Con este comando en cuanto trates de insertar un registro que tenga en el campo llave un registro ya existente, lo actualizará con los valores dados. si quieras mayor información consulta:
http://dev.mysql.com/doc/refman/5.0/es/insert.html |
hola un saludo y gracias por sus respuestas!! bueno por si no me explique bien aquí va de nuevo. lo que necesito es lo siguiente: tengo una tabla que se llama artículos en subastas los campos son: id_articulo-autoincrementable,llave primaria. nombre_articulo--varchar correo-- varchar monto_inicial--varchar fecha-- datetime hasta aquí todo bien!! ok. ya se abran dado cuenta de que se trata de un proyecto de subastas entonces lo que yo quiero es que cuando a un articulo ya se le aya terminado la subasta osea que ya alguien lo compro este se elimine de la base de datos pero yo solo quiero eliminarel nombre,correo,monto_inicial,fecha y poner en su lugar algo que identifique que los campos están vacíos, para que al momento de insertar un nuevo articulo primero busque en los campos que están vacíos, o aquellos en los que aya datos que digan que este campo esta vació. e inserte ahí. si no encontró ningún campo vació.que inserte un registro nuevo con todos los campos ya mencionados. no puedo o mas bien no quiero dejar los campos en ""no null"" porque al momento de que estén ingresando datos si por alguna razón no insertaran algún campo, después me haría falta para hacer posteriores consultas. por eso es que prefiero rellenar los campos con algo que indique que están vacíos al momento de eliminar un articulo. otra duda: es que al momento de subir la imagen para mostrar del articulo que va en subasta como le puedo hacer para que el mismo dato que identifica al articulo en la db lo identifique en la carpeta donde se guarda físicamente la imagen. esto es para efecto de una paginacion y que me muestre los datos paginados sugerencias aceptadas..de nuevo gracias por sus respuestas. y espero que me ayan entendido y me puedan ayudar.. |
Hola LOWELLPELIKNO a lo que mencionas yo lo que haría es colocar un campo de tipo 'estatus' para utilizarlo como bandera, cuando un articulo ya fue subastado lo puedes colocar a estatus = 0 y mientras que este vigente como estatus = 1. Con esto, al momento de que publiques los artículos vas a publicar los que tengas estatus = 1 y cuando quieras reutilizar el espacio de los que ya fueron subastados solo es cuestión de buscar los de estatus = 0.
nomArticulo | estatus
articulo_1 1
articulo_2 1
articulo_3 0
articulo_4 0
SELECT nomArticulo FROM tabla WHERE estatus = 1
resultado:
articulo_1
articulo_2
SELECT nomArticulo FROM tabla WHERE estatus = 0 LIMIT 1 // esto para que te retorne el primero que encuentre
resultado:
articulo_3
Sobre la referencia de las carpetas, puedes almacenar en un campo la dirección en la que éste artículo esté almacenado. "carpeta1\carpeta2" 0 "carpeta1\carpeta2\nombreArchivo.ext" |
Hola LOWELLPELIKNO perdon pero en el anterior comentario no di formato nomArticulo| estatus SELECT nomArticulo FROM tabla WHERE estatus = 1 SELECT nomArticulo FROM tabla WHERE estatus = 0 LIMIT 1 //-esto para que te retorne el primero que encuentre Sobre la referencia de las carpetas, puedes almacenar en un campo la direccion en la que este articulo este almacenado. "carpeta1\\carpeta2" 0 "carpeta1\\carpeta2\\nombreArchivo.ext" |