Foros del Web » Programando para Internet » PHP »

update modifica todos los valores la tabla

Estas en el tema de update modifica todos los valores la tabla en el foro de PHP en Foros del Web. aqui cuando no relampaguea, llovisna o llueve. Ahora traigo otro problema, ahora lo que me falta es arreglar el update para que nada mas tome ...
  #1 (permalink)  
Antiguo 22/06/2012, 20:20
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
update modifica todos los valores la tabla

aqui cuando no relampaguea, llovisna o llueve.
Ahora traigo otro problema, ahora lo que me falta es arreglar el update para que nada mas tome el valor que le corresponde y no modifique a los demas.

Este es el update que hago:



mysql_select_db ("base_datos",$conexion);//selecciono la base de datos y hago el update.
$sql = "UPDATE proveedores SET proveedor='".$_GET["proveedor"]."',calificacion='".$_GET["calificacion"]."'";
$respuesta= mysql_query($sql,$conexion) or die ("Problema con query");;

echo "Se han modificado los datos del proveedor";
__________________
:cool: aprendiz :cool:
  #2 (permalink)  
Antiguo 22/06/2012, 20:23
Avatar de xIamAlex  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 118
Antigüedad: 12 años
Puntos: 23
Respuesta: update modifica todos los valores la tabla

Te falta especificar la condición (WHERE)

Código PHP:
mysql_select_db ("base_datos",$conexion);//selecciono la base de datos y hago el update.
$sql "UPDATE proveedores SET proveedor='".$_GET["proveedor"]."',calificacion='".$_GET["calificacion"]."' WHERE proveedor = 'Nombre_de_tu_proveedor'"// modifica esta especificación
$respuestamysql_query($sql,$conexion) or die ("Problema con query");;

echo 
"Se han modificado los datos del proveedor"
__________________
Las personas quieren autos, casas, teléfonos, dinero, poder, ser famosos, parejas, en fin.. yo solo quiero ser libre y feliz.
  #3 (permalink)  
Antiguo 22/06/2012, 20:53
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: update modifica todos los valores la tabla

Mira en primer lugar, para que un UPDATE sea realmente funcional debes permitir que recorra todos los campos de la tabla a la cual deseas hacer la actualización porque segun sea necesario se actualizara el campo necesario, en segundo debes eliminar cualquier entrada de codigo malicioso, escapando caracteres especiales, una vez dicho lo anterior te comparto un ejemplo:

Código PHP:
Ver original
  1. //Creamos una funcion para escapar caracteres especiales evitando inyecciones
  2. //public function comillas_inteligentes($valor) para cuando lo añades dentro de una clase y esta herede, pero para el caso suponemos que se hace desde la misma hoja php, por lo que solo le declaramos como function, ok...
  3. function comillas_inteligentes($valor)
  4.     {
  5.         // Retirar las barras
  6.         if (get_magic_quotes_gpc())
  7.         {
  8.             $valor = stripslashes($valor);
  9.         }
  10.    
  11.         // Colocar comillas si no es entero
  12.         if (!is_numeric($valor))
  13.         {
  14.             $valor = "'" . mysql_real_escape_string($valor) . "'";
  15.         }
  16.         return $valor;
  17.     }
  18.  
  19. //Continuamos creando la consulta (UPDATE)
  20. //Generando el update
  21. $actualizar=sprintf("UPDATE proveedores SET proveedor=%s, calificacion=%s WHERE n_proveedor=%s)",
  22.                 comillas_inteligentes($_POST["proveedor"]),
  23.                 comillas_inteligentes($_POST["calificacion"]),
  24.                 comillas_inteligentes($_POST["n_proveedor"]));
  25.                     //Para que añada todos los campos en la tabla usuarios
  26.                 mysql_query($actualizar);

Como te habras fijado protejo el envio de mis datos y los filtro mediante la function comillas_inteligentes, bueno eso es solo un caso por ahi, hay varias formas de hacer lo mismo cada quien lo adapta segun le sirva, jejje, acto seguido haces la consulta y le pasas como parametro la function creada que filtrara todos los datos, para luego hacer el update donde sea necesario, espero te sirva, y cualquier cosa, no dudes en preguntar, que estamos para ayudar...
  #4 (permalink)  
Antiguo 22/06/2012, 21:27
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: update modifica todos los valores la tabla

Holas,

Es bueno lo que menciona @kronoselft. Tambien deberias optar con librerias mas seguras que te ayudan mucho a ejecutar tu consulta en php:

http://www.php.net/manual/es/mysqli.prepare.php
http://www.php.net/manual/es/pdo.prepare.php

Saludos
__________________
.: Gildus :.
  #5 (permalink)  
Antiguo 23/06/2012, 08:35
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: update modifica todos los valores la tabla

Cita:
Iniciado por kronoselft Ver Mensaje
Mira en primer lugar, para que un UPDATE sea realmente funcional debes permitir que recorra todos los campos de la tabla a la cual deseas hacer la actualización porque segun sea necesario se actualizara el campo necesario, en segundo debes eliminar cualquier entrada de codigo malicioso, escapando caracteres especiales, una vez dicho lo anterior te comparto un ejemplo:

Código PHP:
Ver original
  1. //Creamos una funcion para escapar caracteres especiales evitando inyecciones
  2. //public function comillas_inteligentes($valor) para cuando lo añades dentro de una clase y esta herede, pero para el caso suponemos que se hace desde la misma hoja php, por lo que solo le declaramos como function, ok...
  3. function comillas_inteligentes($valor)
  4.     {
  5.         // Retirar las barras
  6.         if (get_magic_quotes_gpc())
  7.         {
  8.             $valor = stripslashes($valor);
  9.         }
  10.    
  11.         // Colocar comillas si no es entero
  12.         if (!is_numeric($valor))
  13.         {
  14.             $valor = "'" . mysql_real_escape_string($valor) . "'";
  15.         }
  16.         return $valor;
  17.     }
  18.  
  19. //Continuamos creando la consulta (UPDATE)
  20. //Generando el update
  21. $actualizar=sprintf("UPDATE proveedores SET proveedor=%s, calificacion=%s WHERE n_proveedor=%s)",
  22.                 comillas_inteligentes($_POST["proveedor"]),
  23.                 comillas_inteligentes($_POST["calificacion"]),
  24.                 comillas_inteligentes($_POST["n_proveedor"]));
  25.                     //Para que añada todos los campos en la tabla usuarios
  26.                 mysql_query($actualizar);

Como te habras fijado protejo el envio de mis datos y los filtro mediante la function comillas_inteligentes, bueno eso es solo un caso por ahi, hay varias formas de hacer lo mismo cada quien lo adapta segun le sirva, jejje, acto seguido haces la consulta y le pasas como parametro la function creada que filtrara todos los datos, para luego hacer el update donde sea necesario, espero te sirva, y cualquier cosa, no dudes en preguntar, que estamos para ayudar...
Muchas gracias amigo, pero no me funciono la funcion
__________________
:cool: aprendiz :cool:

Última edición por towi62; 23/06/2012 a las 09:18
  #6 (permalink)  
Antiguo 23/06/2012, 09:48
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: update modifica todos los valores la tabla

Nomas me dice que se ha modificado, pero no en mi tabla no hace ningun cambio
__________________
:cool: aprendiz :cool:
  #7 (permalink)  
Antiguo 23/06/2012, 11:22
 
Fecha de Ingreso: octubre-2009
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: update modifica todos los valores la tabla

Hola amigo
aqui falta la sentencia WHERE
$sql = "UPDATE proveedores SET proveedor='".$_GET["proveedor"]."',calificacion='".$_GET["calificacion"]."' WHERE (la condicion que quieras poner)";

pero para mas seguridad yo te recomiendo varias cosas

1 si siempre que hagas el UPDATE sera para modificar un solo registro de la tabla te recomiendo que alfinal de la consulta pongas LIMIT 1

2 Intenta evitar siempre el pasar directamente los datos utilizando variables globales. puesto que esta informacion puede ser manipulada por el usuario

por lo tanto te recomendaria hacer esto

$proveedor = htmlspecialchars($_GET['proveedor']);
$calificacion = htmlspecialchars($_GET['calificacion']);

entonces tu consulta quedaria asi


$sql = "UPDATE `proveedores` SET `proveedor` = $proveedor, `calificacion` = $calificacion WHERE `idproveedor` = $proveedorModificar LIMIT 1";
  #8 (permalink)  
Antiguo 23/06/2012, 11:36
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: update modifica todos los valores la tabla

Mejor es ver cual es el codigo que esta usando, porque me imagino que siguio los pasos que se mencionaron, pero no se muestra que codigo en si esta usando, para asi ver cual es el problema o error.

Saludos
__________________
.: Gildus :.
  #9 (permalink)  
Antiguo 23/06/2012, 15:19
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: update modifica todos los valores la tabla

Cita:
Iniciado por gildus Ver Mensaje
Mejor es ver cual es el codigo que esta usando, porque me imagino que siguio los pasos que se mencionaron, pero no se muestra que codigo en si esta usando, para asi ver cual es el problema o error.

Saludos
ya solucione el problema gracias
__________________
:cool: aprendiz :cool:
  #10 (permalink)  
Antiguo 24/06/2012, 03:33
 
Fecha de Ingreso: octubre-2009
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: update modifica todos los valores la tabla

lo solucionaste o te lo solucionamos?

Etiquetas: sql
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 21:26.