Foros del Web » Programando para Internet » PHP »

porque no me actualiza un campo con php

Estas en el tema de porque no me actualiza un campo con php en el foro de PHP en Foros del Web. Estoy intentando actualizar dos campos de mi bd pero solo me actualiza uno la sql la hice algo asin: $sql = "UPDATE anuncio SET campo1='".$fecha1."',campo2=current_timestamp() ...

  #1 (permalink)  
Antiguo 20/06/2012, 06:39
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
porque no me actualiza un campo con php

Estoy intentando actualizar dos campos de mi bd pero solo me actualiza uno la sql la hice algo asin:

$sql = "UPDATE
anuncio
SET campo1='".$fecha1."',campo2=current_timestamp()
WHERE
id=1";

solo me actualiza el campo1 el campo 2 no a que puede ser debido.

saludos
  #2 (permalink)  
Antiguo 20/06/2012, 06:58
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por roboty Ver Mensaje
Estoy intentando actualizar dos campos de mi bd pero solo me actualiza uno la sql la hice algo asin:

$sql = "UPDATE anuncio SET
campo1='".$fecha1."',
campo2='".current_timestamp()."'
WHERE id = '1' ";

solo me actualiza el campo1 el campo 2 no a que puede ser debido.

saludos
Prueba ahí.
Saludos!
__________________
Freelance - Aplicaciones Web
  #3 (permalink)  
Antiguo 20/06/2012, 07:03
Avatar de cesarin3134  
Fecha de Ingreso: enero-2012
Ubicación: Milan
Mensajes: 97
Antigüedad: 12 años, 3 meses
Puntos: 20
Respuesta: porque no me actualiza un campo con php

prueba asi :

Código PHP:
$sql "UPDATE anuncio SET campo1 = $fecha1 , campo2 = current_timestamp() WHERE id=1"
  #4 (permalink)  
Antiguo 20/06/2012, 07:29
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Hola gracias a los dos por vuestra colaboracion, pero ninguna de las dos me funciona, como dije antes el campo llamado campo2 es el que no me actualiza yo estoy intentando utilizar current_timestamp() que es una funcion de mysql que te devuelve fecha y hora, si pruebo hacer una consulta en mysql algo asin:

Código MySQL:
Ver original
  1. UPDATE anuncio SET campo1 = current_timestamp() , campo2 = current_timestamp() WHERE id=1

funciona pero cuando lo intento como dije antes no a que es debido, alguna idea.

Saludos.
  #5 (permalink)  
Antiguo 20/06/2012, 07:48
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Respuesta: porque no me actualiza un campo con php

Es raro que funcione de una u otra manera, pero con una variable no.

Fijate que es lo que tiene $fecha1, y que tenga el formato correcto de fecha; Si el campo1 es datetime acordate que es YYYY-mm-dd H:i:s => 2012-06-20 10:45:35

Cualquier cosa si no sabés que formato está $fecha1, hacé un echo para checkearlo.

Saludos!
__________________
Freelance - Aplicaciones Web
  #6 (permalink)  
Antiguo 20/06/2012, 07:58
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Hola carmagedon, el campo1 me hace bien la actualizacion, que es una fecha que recupero con php, pero el campo2 no me hace la actualizacion, lo que intento hacer en el campo2 es llamar a la funcion current_timestamp() de mysql para que me actulize el campo en mi bd, pero no me lo hace, a que puede ser debido, el campo lo tengo estructurado asin:

type=datetime
default=NULL
null

como es la manera correcta de usar el current_timestamp().

Saludos
  #7 (permalink)  
Antiguo 20/06/2012, 08:01
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Respuesta: porque no me actualiza un campo con php

Prueba a usar "now()" mas que current_timestamp

por ejemplo

Update table set campo=NOW()
__________________
» Presupuesto Pagina Web
  #8 (permalink)  
Antiguo 20/06/2012, 08:08
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Hola miSko, ya estube probando tambien la funcion now() de mysql pero nada, saludos.
  #9 (permalink)  
Antiguo 20/06/2012, 08:34
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Usted esta utilizando algun ODBC para realizar la sentencia ? si realiza la sentencia en el programa que administra la base de datos esta le funciona bien ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 20/06/2012, 08:40
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

añadir que el campo que quiero actualizar no tiene nada insertado osea esta marcado como NULL, no se si esto tiene algo que ver, aunque realmente no porque si hago la consulta mysql directamente con consulta sql si que me lo actualiza, tambien queria añadir que realmente estoy utilizando pdo donde el id lo tengo asin ? ejecutandolo luego pero la ejecucion me funciona bien, ya no se que mas hacer, cualquier ayuda bienvenida sea.

Saludos.
  #11 (permalink)  
Antiguo 20/06/2012, 08:40
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Respuesta: porque no me actualiza un campo con php

Sino probá en ponerle en PHP:

Código PHP:
Ver original
  1. Update table set campo = '".date("Y-m-d H:i:s)."'

A ver si te funciona.

Saludos!
__________________
Freelance - Aplicaciones Web
  #12 (permalink)  
Antiguo 20/06/2012, 08:41
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por jotaincubus Ver Mensaje
Usted esta utilizando algun ODBC para realizar la sentencia ? si realiza la sentencia en el programa que administra la base de datos esta le funciona bien ?
si que funciona si pruebo con una sql directamente en phpmyadmin, saludos.
  #13 (permalink)  
Antiguo 20/06/2012, 08:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Me lo imagine... te voy a pasar un tema que abri hace rato ya en el cual planteaba exactamente el mismo problema que tu tienes...

Este es el tema
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #14 (permalink)  
Antiguo 20/06/2012, 08:51
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por carmagedon Ver Mensaje
Sino probá en ponerle en PHP:

Código PHP:
Ver original
  1. Update table set campo = '".date("Y-m-d H:i:s)."'

A ver si te funciona.

Saludos!
de esta forma tampoco me funciona, he comprobado los campos y los tengo bien escritos, ya no se que mas probar, saludos
  #15 (permalink)  
Antiguo 20/06/2012, 09:05
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por jotaincubus Ver Mensaje
Me lo imagine... te voy a pasar un tema que abri hace rato ya en el cual planteaba exactamente el mismo problema que tu tienes...

Este es el tema

probe de actualizar el campo con una variable de php como hice con el primer campo1 pero tampoco me funciono, que puede ser.

saludos
  #16 (permalink)  
Antiguo 20/06/2012, 09:15
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Por favor coloca el codigo desde donde inicializas las variables hasta donde realizas es execute... Si leiste todo el tema que te mostre te darias cuenta de donde esta el error. De todas formas coloca el codigo para poder explicarte bien que es lo que pasa.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #17 (permalink)  
Antiguo 20/06/2012, 09:36
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

$sql= "UPDATE anuncio SET campo1=?,campo2=? WHERE id=?";
$pdo = $db->prepare($sql);
$actualizar=$pdo->execute(array($fecha1,$fecha2,$id));

las variables son correctas y tienen el formato de fecha que necesitan, la consulta me actualiza el campo 1 donde esta el id que solicito, pero el campo2 nada de nada la variable fecha2 la hice con php al final algo asin:

$fecha2=date("Y-m-d H:i:s");

como ves ya no estoy probando con funciones mysql, probe con variables directamente con php.

Saludos
  #18 (permalink)  
Antiguo 20/06/2012, 09:46
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Me conmueve tu pereza de leer... en el tema que te pase esta explicado perfectamente porque no te funciona y explican como para ñoños como funciona PDO, pero bueno hoy estoy de buen humor y te dire que es lo que pasa tal cual me enseño @GatorV, es mas voy a copiar y pegar el texto de @GatorV ya que el credito es para el:

Cita:
Cuando tu mandas un query, por ejemplo SELECT * FROM foo WHERE bar = ?, este query como tal, literal se envía a MySQL (con todo y el ?), el motor de MySQL analiza el query, y ve el placeholder y dice "ok espero una variable de entrada", entonces ejecuta el query y lo deja en un estado compilado, luego PDO al hacer el execute, le dice del query que te envié, estos son los parámetros, y entonces hace la ejecución del Query.
SOLUCION PARA AUMENTAR MAS TU PEREZA

$sql= "UPDATE anuncio SET campo1 = ?, campo 2 = (NOW()) WHERE id = ?";
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #19 (permalink)  
Antiguo 20/06/2012, 09:55
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

jotaincubus eso es lo que entendi, aunque me lo lei rapidamente entendi mas o menos lo de las funcions mysql, pero no me funciono, por eso lo hice directamente con variables de php, como puse el el post de arriba tuyo, pero tampoco me funciono, y los nombres de los campos estan bien escritos ya no se que puede ser
  #20 (permalink)  
Antiguo 20/06/2012, 09:59
Avatar de cesarin3134  
Fecha de Ingreso: enero-2012
Ubicación: Milan
Mensajes: 97
Antigüedad: 12 años, 3 meses
Puntos: 20
Respuesta: porque no me actualiza un campo con php

me quede con la curiosidad. despues de ejecutar la query podrias ver el error escriviendo.

Código PHP:
mysql_query($Query) or die(mysql_error()); 
seguro k ahi te dice pork no te actualiza el campo.
  #21 (permalink)  
Antiguo 20/06/2012, 10:00
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

$sql= "UPDATE anuncio SET campo1 = ?, campo2 = NOW() WHERE id = ?";
$pdo = $db->prepare($sql);
$actualizar=$pdo->execute(array($fecha1, $id));
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #22 (permalink)  
Antiguo 20/06/2012, 10:01
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por cesarin3134 Ver Mensaje
me quede con la curiosidad. despues de ejecutar la query podrias ver el error escriviendo.

Código PHP:
mysql_query($Query) or die(mysql_error()); 
seguro k ahi te dice pork no te actualiza el campo.
Eso no le funcionaria porque esta usando PDO...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #23 (permalink)  
Antiguo 20/06/2012, 10:02
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por jotaincubus Ver Mensaje
$sql= "UPDATE anuncio SET campo1 = ?, campo2 = NOW() WHERE id = ?";
$pdo = $db->prepare($sql);
$actualizar=$pdo->execute(array($fecha1, $id));
eso mismo hice y no funciono, saludos.

ahora voy a descansar un rato que ya estoy saturado, luego seguire con mi problema.
  #24 (permalink)  
Antiguo 20/06/2012, 10:11
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

1. Por que si la instacia de la clase es $db utilizas $pdo para ejecutarla? mas raro aun, no te deberia actualizar nada, pero si tu dices que actualiza el primero seran milagros.

2. Lo otro que puede hacer es utilizar una columna TIMESTAMP para que al actualizar esta automaticamente sea llenada por el motor sin pasarle nada de nada

__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #25 (permalink)  
Antiguo 20/06/2012, 12:31
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por jotaincubus Ver Mensaje
1. Por que si la instacia de la clase es $db utilizas $pdo para ejecutarla? mas raro aun, no te deberia actualizar nada, pero si tu dices que actualiza el primero seran milagros.

2. Lo otro que puede hacer es utilizar una columna TIMESTAMP para que al actualizar esta automaticamente sea llenada por el motor sin pasarle nada de nada

el codigo lo escribi a mano fue un error de escritura, lo raro es que si lo hago con consulta directamente en mysql si que funciona seguire probando cosas cualquier ayuda se agradece, saludos.
  #26 (permalink)  
Antiguo 20/06/2012, 12:56
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Claro que te va a funcionar directamente en MySql... El error es tuyo ya que como dige @GatorV no es posible pasar sintaxis SQL directamente al execute de PDO. Tratare de explicarte para que sepas en si cual es el error:

1. PREPARE -> Esto le dice a PDO que le envie a MySQL el codigo tal cual esta en tu codigo PHP aun con los PLACEHOLDERS (?) osea a MySQL le llega esto UPDATE anuncio SET campo1 = ?, campo2 = ? WHERE id = ? con los signos de interrogacion y todo

2. MySQL compila ese codigo nativamente y lo guarda en memoria, osea que para MySQL eso es codigo SQL nativo asi que lo tiene en un estado de reposo y le responde a PDO diciendole "Vea señor PDO yo ya compile el codigo nativo SQL, pero usted me mando unos PLACEHOLDERS (?) ahora si mandeme los datos correspondientes a los PLACEHOLDERS" que ya no pueden ser codigos SQL porque yo ya compile asi que espero datos como tal y no sentencias SQL".

3. EXECUTE -> al PDO recibir la respuesta de MySQL dice "listo señor MySQL EJECUTE la sentencia que tiene ya compilada con los datos que le mando en este array".

POR QUE NO FUNCIONA

Porque tu al preparar ya debiste haber enviado todo el codigo SQL al motor asi que el en el EXECUTE no va a tomar el NOW() o el CURRENT_TIMESTAMP() como funcion de MySQL sino como una cadena de caracteres normal, ya que el codigo MySQL fue compilado desde el PREPARE.

Por eso debes primero modificar lo de la INSTANCIA de la clase $db o $pdo no se cual sea la instancia real y segundo debes colocar el NOW() desde el PREPARE y no desde el EXECUTE
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #27 (permalink)  
Antiguo 20/06/2012, 15:08
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por jotaincubus Ver Mensaje
Claro que te va a funcionar directamente en MySql... El error es tuyo ya que como dige @GatorV no es posible pasar sintaxis SQL directamente al execute de PDO. Tratare de explicarte para que sepas en si cual es el error:

1. PREPARE -> Esto le dice a PDO que le envie a MySQL el codigo tal cual esta en tu codigo PHP aun con los PLACEHOLDERS (?) osea a MySQL le llega esto UPDATE anuncio SET campo1 = ?, campo2 = ? WHERE id = ? con los signos de interrogacion y todo

2. MySQL compila ese codigo nativamente y lo guarda en memoria, osea que para MySQL eso es codigo SQL nativo asi que lo tiene en un estado de reposo y le responde a PDO diciendole "Vea señor PDO yo ya compile el codigo nativo SQL, pero usted me mando unos PLACEHOLDERS (?) ahora si mandeme los datos correspondientes a los PLACEHOLDERS" que ya no pueden ser codigos SQL porque yo ya compile asi que espero datos como tal y no sentencias SQL".

3. EXECUTE -> al PDO recibir la respuesta de MySQL dice "listo señor MySQL EJECUTE la sentencia que tiene ya compilada con los datos que le mando en este array".

POR QUE NO FUNCIONA

Porque tu al preparar ya debiste haber enviado todo el codigo SQL al motor asi que el en el EXECUTE no va a tomar el NOW() o el CURRENT_TIMESTAMP() como funcion de MySQL sino como una cadena de caracteres normal, ya que el codigo MySQL fue compilado desde el PREPARE.

Por eso debes primero modificar lo de la INSTANCIA de la clase $db o $pdo no se cual sea la instancia real y segundo debes colocar el NOW() desde el PREPARE y no desde el EXECUTE
Hola de verdad mil gracias por seguir ayudando, aunque en el enlace que dejastes en el otro post @gatorv lo deja muy claro la forma que funciona PDO, como ya comente el error no esta ahi ya que le estoy pasando los valores osea los tres valores que uso se los paso con el execute en variables php pero sin usar sql, por eso no entiendo donde puede estar el problema, siguire mirando y si lo encuentro os comento, saludos.
  #28 (permalink)  
Antiguo 20/06/2012, 15:11
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: porque no me actualiza un campo con php

Cita:
Iniciado por jotaincubus Ver Mensaje
1. Por que si la instacia de la clase es $db utilizas $pdo para ejecutarla? mas raro aun, no te deberia actualizar nada, pero si tu dices que actualiza el primero seran milagros.

2. Lo otro que puede hacer es utilizar una columna TIMESTAMP para que al actualizar esta automaticamente sea llenada por el motor sin pasarle nada de nada

por cierto estube mirando el codigo y no entiendo esto que pusistes la instancia es $db y despues la ejecuto con la variable donde guardo el prepare, en el manual php entendi eso incluso con los ejemplos, saludos.
  #29 (permalink)  
Antiguo 20/06/2012, 15:31
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Me equivoque al no ver $db = new PDO(...); en tu codigo.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #30 (permalink)  
Antiguo 20/06/2012, 15:42
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: porque no me actualiza un campo con php

Te voy a brindar este codigo que te ayudara mucho en tus desarrollos (no se si ya lo tengas), este codigo es para activcar que PDO muestre los errores al realizar la sentencia SQL, espero te sirva:

Código PHP:
Ver original
  1. class PDOConnection extends PDO
  2.     {
  3.         public function __construct($dsn, $user = null, $password = null, array $options = null)
  4.         {
  5.             parent::__construct($dsn, $user, $password, $options);
  6.             $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  7.         }
  8.     }
  9.      
  10.     $conn = new PDOConnection('mysql:dbname=mydb', 'username', 'passwd');
  11.      
  12.     try {
  13.         $stmt = $conn->prepare('SELECT * FROM non-existent-table');
  14.         $stmt->execute();
  15.     } catch (PDOException $e) {
  16.         print_r($e);
  17.     }
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: sql, actualizar, campos
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:47.