Foros del Web » Programando para Internet » PHP »

error al usar UPDATE par modificar una bd

Estas en el tema de error al usar UPDATE par modificar una bd en el foro de PHP en Foros del Web. No se que puede estar pasand aunque lo he revisado mil veces. Quier modificar el registro de un BD, para ello defino una conexion una ...
  #1 (permalink)  
Antiguo 20/02/2014, 05:39
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 7 meses
Puntos: 0
error al usar UPDATE par modificar una bd

No se que puede estar pasand aunque lo he revisado mil veces.

Quier modificar el registro de un BD, para ello defino una conexion una consulta.

he consultado la tabla de formamanual para ver si no había ningún registro que cumpliese las siguientes condiciones y si que hay uno. Aun así me da erroe en la consulta.

1º) Se jecuta sin erroresla conexion:

$conexion=mysql_connect('localhost','root','','ofe rtaalabaja') or die("No se puede conectar el servidor");
mysql_select_db("ofertaalabaja",$conexion) or die("No se puede seleccionar las base de datos");

2º) da errores en la siguiente consulta:

$instruccion="UPDATE subastas SET CODIGO_SUBASTA=".$codigo_subasta." WHERE ABIERTA_CERRADA="."'".$abierta_cerrada."'";
echo $instruccion."<br/>";
$consulta=mysql_query($instruccion , $conexion) or die ("Fallo en la consulta de subastas");

3º)he incluido como veis un echo como control de lo que está pasando, me devuelve:

UPDATE subastas SET CODIGO_SUBASTA=[[email protected]]-14-02-15-9 WHERE ABIERTA_CERRADA='CERRADA'

como veis el valor del campo después del SET está si comillas y el valor del campo después del where está con cmillas.

tambiénhe probado poniendo los dos valores con y sin comillas y sigue dando error.

!!!!!SOCORRRO

no veo nada

gracias
  #2 (permalink)  
Antiguo 20/02/2014, 05:52
 
Fecha de Ingreso: agosto-2013
Mensajes: 28
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: error al usar UPDATE par modificar una bd

De momento se me ocurre que vayas al mysql y ejecutes

UPDATE subastas SET CODIGO_SUBASTA=[[email protected]]-14-02-15-9 WHERE ABIERTA_CERRADA='CERRADA'

él te dará más información de porque no se esta ejecutando correctamente. quizá alguna incompatibilidad en el campo CODIGO_SUBASTA
  #3 (permalink)  
Antiguo 20/02/2014, 06:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error al usar UPDATE par modificar una bd

Código MySQL:
Ver original
  1. UPDATE subastas SET CODIGO_SUBASTA=[[email protected]]-14-02-15-9 WHERE ABIERTA_CERRADA='CERRADA'
El problema es que esto está mal escrito.
Si [[email protected]]-14-02-15-9 es una cadena de texto, en la sentencia SQL debe quedar encerrado entre apóstrofes (').
MYSQL no lee las variables de PHP, por lo que jamás se entera de que eso es un string. Para el SQL los strings tienen que estar en la sentencia como tales, y eso es cualquier cosa.

Adicionale los apóstrofes:
Código PHP:
$instruccion="UPDATE subastas SET CODIGO_SUBASTA='".$codigo_subasta."' WHERE ABIERTA_CERRADA="."'".$abierta_cerrada."'"
SI eso no es una cadena, entonces es una variable llena de basura.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 20/02/2014, 06:32
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: error al usar UPDATE par modificar una bd

También lo he hecho como dice gnzsoloyo digue danod error:

1º) Sentencias en PHP:

$instruccion="UPDATE subastas SET CODIGO_SUBASTA=' ".$codigo_subasta." ' WHERE ABIERTA_CERRADA="." ' ".$abierta_cerrada." ' ";
echo $instruccion."<br/>";

2º) Respuesta del echo

UPDATE subastas SET CODIGO_SUBASTA='[[email protected]]-14-02-15-9 ' WHERE ABIERTA_CERRADA='CERRADA'

sigue dando error ,ademas la sentencia mysql, simpre tiene un valor del campo con comillas y otro sin comillas .Dependiend de que uses mysql_query or mysqli_query lleva comillas el valor del campo que pones en SET o en where nunca los dos.

3º) He hecho además esto:

Antes de usar UPDATE para actualizar he presuntado con un set si locliza algú registro con CODIGO_SUBASTA='$codigo_subasta?

$instru="SELECT * FROM subastas WHERE CODIGO_SUBASTA='$codigo_subasta'";
$result=mysql_query($instru , $conexion) or die ("Fallo en la primera consulta de subastas");
$row=mysql_fetch_row($result);
echo "row0=".$row[0];

el echo de row me dvuelve exactamente la cadena qu estoy mentiendo en UPDATE,
row0=[[email protected]]-14-02-15-9

!!!!SOCORRO
  #5 (permalink)  
Antiguo 20/02/2014, 07:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error al usar UPDATE par modificar una bd

Cita:
Dependiend de que uses mysql_query or mysqli_query lleva comillas el valor del campo que pones en SET o en where nunca los dos.
Eso no tiene ningún sentido.
En ambos casos, si necesitas crear la sentencia SQL como un string, forzosamente tiene que llevar apóstrofos. Es absoluto, porque de lo contrario MySQL no lo reconocerá como cadena de texto.
¿Eso se entiende?

A menos que utilices PDO y bindees parámetros, no puedes evitar los apostrofos para las cadenas de texto.

¿Probaste ejecutar eso con phpMyadmin?:
Código MySQL:
Ver original
  1. UPDATE subastas SET CODIGO_SUBASTA='[[email protected]]-14-02-15-9 '
  2. WHERE ABIERTA_CERRADA='CERRADA'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 20/02/2014, 07:43
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: error al usar UPDATE par modificar una bd

ya está resulto:

estaba confundido y había cambiad el campo a modificar or el de la condición.

Por eso no lo emcontraba en la tabla.

he vuelto a entrecomillar tanto en set como en where y funciona, creo recordar que funciona con comillas en uno sólo de los términos deotras ocasiones, pero es mejor la regla de entrcomillar en los dos pues es más simple y no tienes que recordar cuales cual.

Usar phmyadmin me ha servido para darme cuenta dl error.

Gracias a los dos

saludos
  #7 (permalink)  
Antiguo 20/02/2014, 07:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error al usar UPDATE par modificar una bd

Cita:
he vuelto a entrecomillar tanto en set como en where y funciona, creo recordar que funciona con comillas en uno sólo de los términos deotras ocasiones, pero es mejor la regla de entrcomillar en los dos pues es más simple y no tienes que recordar cuales cual.
En realidad desde PHP no puedes ver la diferencia, pero hay algunas distinciones a tener en cuenta:
- Si comparas un campo numérico con una cadena, o una cadena con un campo numérico, obligas a MySQL a realizar una conversión implícita entre tipos de dato, lo que a la larga se paga con performance.
- Poner entre apóstrofes un valor que debe recibirse como número esconde errores de programación, porque el dato puede no estar llegando en la variable, pero eso no dispara un error.
Código SQL:
Ver original
  1. Supongamos este caso:
  2. SELECT A, B, C
  3. FROM tabla
  4. WHERE camponumerico = '$id';

Si $id llega vcío, la sentencia quedaría así:
Código SQL:
Ver original
  1. SELECT A, B, C
  2. FROM tabla
  3. WHERE camponumerico = '';
En la conversión del espacio vacío por un número, el valor es cero, por lo que MySQL lo interpretará así:
Código SQL:
Ver original
  1. SELECT A, B, C
  2. FROM tabla
  3. WHERE camponumerico = 0;
lo cual es incorrecto, porque no devolverá datos, pero no porque no los haya, sino porque el valor que tu supones que está llegando, en realidad no está. Como consecuencia puedes llegar a suponer que tienes un error en la base, cuando en realidad tienes un error en el script de PHP, donde no verificas los datos entrantes.
No es lo mismo una cosa que otra...

En cambio, si lo usas así:
Código SQL:
Ver original
  1. SELECT A, B, C
  2. FROM tabla
  3. WHERE camponumerico = $id;

MySQL recibirá esto:
Código SQL:
Ver original
  1. SELECT A, B, C
  2. FROM tabla
  3. WHERE camponumerico = ;
lo cual disparará un error de sintaxis, que rápidamente se puede identificar como fallo de datos entrantes en la variable.

Resumiendo: Si son valores numericos no los pongas entre apostrofos. Te esconderá errores que luego te costará encontrar rápidamente, porque estarás buscando en el lugar equivocado.

Se ponen entre apostrofes las cadenas de texto, las fechas y horas. Los valores numéricos NO.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 20/02/2014, 12:47
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: error al usar UPDATE par modificar una bd

pues he hecho exactamente lo que dices para el siguiente caso y me da error.

1º) Estos son los campos implicados en la consulta:

1.1 $codigo_aclaracion_solicitada=$_POST["CODIGO_ACLARACION_SOLICITADA"];

1.2 $respuesta_aclaracion_solicitada=$_POST["RESPUESTA_ACLARACION_SOLICITADA"];

El primero es un entero el segundo una cadena.

he hecho el update así


2º) $instruccion="UPDATE aclaracionesssubastas SET RESPUESTA_ACLARACION_SOLICITADA="." ' ".$respuesta_aclaracion_solicitada." ' "." WHERE CODIGO_ACLARACION_SOLICITADA=".$codigo_aclaracion_ solicitada;
echo $instruccion;
$consulta=mysql_query($instruccion,$conexion) or die ("Fallo en la consulta DE respuestas");

3º) el echo devuelve:
UPDATE aclaracionesssubastas SET RESPUESTA_ACLARACION_SOLICITADA='VALE' WHERE CODIGO_ACLARACION_SOLICITADA=64963

distinguiendo numeros y cadenas,

aun así da error

tienes idea de que puede estar pasando??

necesito ayuda ,gracias
  #9 (permalink)  
Antiguo 20/02/2014, 13:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: error al usar UPDATE par modificar una bd

si dices que error te sal por pantalla....

Código PHP:
Ver original
  1. $consulta=mysql_query($instruccion,$conexion) or die ("Fallo en la consulta DE respuestas".mysqli_error($conexion));
  #10 (permalink)  
Antiguo 20/02/2014, 14:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error al usar UPDATE par modificar una bd

Y supongamos, si usas el phpMyadmin, y ejecutas esto a mano:
Código SQL:
Ver original
  1. UPDATE aclaracionesssubastas
  2. SET RESPUESTA_ACLARACION_SOLICITADA='VALE'
  3. WHERE CODIGO_ACLARACION_SOLICITADA=64963
¿Qué error te sale?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bd, modificar, mysql, par, registro, select, sql, tabla, update, usar
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 18:12.