ayuda con el update de php

Kaiz

estoy intentando modificar un registro ya existente en la base de datos, y me esta tocando la moral el comando update, pq por alguna razon no me funciona.

la consulta es esta
UPDATE cliente SET nombre='manolo' WHERE dni='12345678';

la gracia esta, en que usando la consola de SQL del mysqlcc si funciona, pero pongo la consulta en una pagina php y no me va, me da error, pq dice QUE EL DNI YA EXISTE (joder, es logico, sino no podria modificar el registro...)

Y no es un error de sintaxis en el php, pq cualkier otra consulta ke ponga alli, sea insercion o borrado, funcionan. Solo me falla el maldito update.

por favor ayuda.

editado: mi version del php 4.3.3 (nose si eso tendra algo que ver, pero por si acaso, pq es que no logro entender pq no actualiza)

Whose

porque en vez de poner dni pones la id, ya se que es una tonteria pero quizas asi lo consigas ;)

Kaiz

Perdona no me di cuenta que no explique la estructura de esa tabla:
dni es clave primaria y indice, y luego hay otros campos que solo contienen datos, ninguna restriccion en ellos.

Supongo que te referias con id a usar como campo de busqueda la clave primaria no?

Whose

Yo es que normalmente para insertar, borrar o actualizar datos, en noticias y todo lo demas, como es normal lo hago con la variable $row[id] y por eso no tengo mucha idea, aparte de que llevo poco con PHP.
De todos modos puedes probar en otro hosting si es que usas lycos, porque ultimamente veo a mucha gente con problemas con PHP en lycos ;) Saludos

Kaiz

aun no he acabado la web, estoy aun haciendola, con lo que yo mismo me lo monton y me lo como, server localhost de php y mysql.

PiradoIV

mysql_query("UPDATE cliente SET nombre = 'manolo' WHERE id = '66' LIMIT 1");

Tal como lo tienes está bien, supongo que será problema de la estructura de la BDD, dni debería ser un INT normal y corriente y deberías tener una columna ID, index y auto_increment.

Con eso y un bizcocho te debería funcionar bien.

El "LIMIT 1" es por si las moscas, para que no te cambie más de un row en caso de que algo esté duplicado.

Saludos y suerte,
Pirado IV estuvo akí ;)

Kaiz

Ya esta resuelto, nose pq pero bueno, cosas de la programacion.. que a veces no tiene sentido.

esto funciona:
$consulta = "UPDATE $tabla SET nombre='$POST[h_nombre_cliente]', direccion='$POST[h_direccion]', telefono='$POST[h_telefono]', ciudad='$POST[h_ciudad]' WHERE dni='$_POST[h_dni]';"

esto NO:
$consulta = "UPDATE $tabla SET nombre='$h_nombre_cliente', direccion='h_direccion', telefono='$h_telefono', ciudad='$h_ciudad' WHERE dni='$h_dni';";

Si alguien sabe la razon, por favor me lo explique, pq los inserts y los deletes funcionan sin tener que poner el prefijo del metodo post.

Usuarios habituales

  • Kaiz
  • PiradoIV
  • Whose