Autor Tema: PHP - Query update con variables concatenadas dentro de la expresión consulta  (Leído 6412 veces)

Trenkos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola, es mi primer post así que corresponde agradecer porque he aprendido lo poco que se con los cursos online de esta web.

Al grano, estoy intentando hacer una query update donde la condicion where es una variable:

Código: [Seleccionar]
mysqli_query($link, "UPDATE servicios SET ser_fecha='$fecha', ser_horai='$horai', ser_horaf='$horaf', ser_codigo='$codigo', ser_contacto='$contacto', ser_problema='$problema', ser_diagnostico='$diagnostico', ser_descripcion='$descripcion', ser_estado='$estado' WHERE id = '$id'");
El problema es que no se ejecuta.

He puesto un echo $id; antes para imprimir el valor de la variable y si tiene valor.
También he probado utilizar un número de id en lugar de la variable para ver si era la sintaxis de la query y en ese caso si funciona.

He probado quitar las comillas a la variable $id pero no da ningún resultado.

Alguna sugerencia?
« Última modificación: 30 de Agosto 2015, 09:41 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola Trenkos!

Bienvenido a los foros, esperamos tu participación.

Hay que tener cuidado con las comillas, apertura-cierre, y problemas de ambiguedad por usar un tipo de comillas que ya esté en uso dentro de la expresión. Una simple comilla puede hacer que falle la consulta.

Se discute un problema parecido en www.aprenderaprogramar.com/foros/index.php?topic=1472 donde se explica como incluir variables

Puedes hacer una consulta más simple para probar primero el balanceo de comillas

Código: [Seleccionar]
mysqli_query($link, "SELECT * FROM servicios WHERE id = '".$id."'");
Una vez compruebes que te funcione, pasarías a hacer la consulta más compleja

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Trenkos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola Cesar, gracias por responder tan pronto.

He comenzado haciendo las pruebas como indicas desde una query muy simple en adelante.

Al final el problema no era las comillas pero igualmente debo agradecer porque con tu consejo he salido del bucle mental que tenía.

No se exactamente el origen del problema pero lo solucioné incluyendo un impute, type hidden con value=$id.

(decidí cambiar el nombre de $id a $idservicio porque me hacía lio)
Código: [Seleccionar]
<input id="idservicio" type="hidden" name="idservicio" value="<?php echo $idservicio;?>"/>
De esta forma cuando hago submit recibo nuevamente el valor idservicio y lo recupero con POST justo antes de la query.

Código: [Seleccionar]
$idservicio = $_POST['idservicio'];
mysqli_query($link, "UPDATE servicios SET ser_fecha='$fecha', ser_horai='$horai', ser_horaf='$horaf', ser_codigo='$codigo', ser_contacto='$contacto', ser_problema='$problema', ser_diagnostico='$diagnostico', ser_descripcion='$descripcion', ser_estado='$estado' WHERE id = '".$idservicio."'");

Mantuve tu "formato" de comillas aunque no lo entiendo. Veo comillas simples y dobles consecutivas y lo de los puntos para concatenar no se que pintan pero funciona.
                  

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola, me alegro de que lo hayas solucionado

El punto es el operador de concatenación como se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 en la entrega CU00821B

Pero si te está funcionando el uso de variables dentro de la expresión sin insertarlo igualmente debería funcionarte en el where sin insertarlo, al menos en teoría

Código: [Seleccionar]
$idservicio = $_POST['idservicio'];
mysqli_query($link, "UPDATE servicios SET ser_fecha='$fecha', ser_horai='$horai', ser_horaf='$horaf', ser_codigo='$codigo', ser_contacto='$contacto', ser_problema='$problema', ser_diagnostico='$diagnostico', ser_descripcion='$descripcion', ser_estado='$estado' WHERE id = '$idservicio'");

Saludos
Responsable de departamento de producción aprenderaprogramar.com

Trenkos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Lo del punto lo leí y lo uso mucho a la hora de concatenar HTML y PHP (por ejemplo en un echo "texto".$variable
Dentro de una query nunca lo utilice y de ahi mi confusión.

En lo que estoy trabajando es en poder editar, borrar y cambiar estado a las líneas de un listado. Algo como lo que se explica aqui: (CU01139E)
Pero como no tengo ni idea de JS me animé a intentarlo con PHP, a ver si me tiro al agua con JS dentro de poco.
Estoy muy conforme con el resultado gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".