Ver Mensaje Individual
  #27 (permalink)  
Antiguo 20/06/2012, 15:08
roboty
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años, 7 meses
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.