• Portada
    • Recientes
    • Usuarios
    • Registrarse
    • Conectarse

    Ayuda con consulta MySQL en PHP

    Programado Fijo Cerrado Movido
    Software
    4
    32
    3.4k
    Cargando más mensajes
    • Más antiguo a más nuevo
    • Más nuevo a más antiguo
    • Mayor número de Votos
    Responder
    • Responder como tema
    Accede para responder
    Este tema ha sido borrado. Solo los usuarios que tengan privilegios de administración de temas pueden verlo.
    • NiTTAKuN
      NiTTAKu
      Última edición por

      La consulta:
      $query = "INSERT INTO entradas ( fecha, hora, $sala ) VALUES
      ('$fecha','$hora','$entradas')";
      Me da el siguiente fallo:
      You have an error in your SQL syntax near '01) VALUES ('24-11-
      2004','1','2')' at line 1

      Alguien ve donde esta el error? yo la verdad no consigo verlo :vayatela: 😕

      1 Respuesta Última respuesta Responder Citar 0
      • MoebiusM
        Moebius
        Última edición por

        Creo que tu problema viene por tener un campo cuyo nombre esta compuesto por caracteres numericos 01. Para solucionar tu problema tendras que ponerle caracteres de escape al nombre del campo … algo así como:

        $query = "INSERT INTO entradas ( fecha, hora, '$sala' ) VALUES
        ('$fecha','$hora','$entradas')";

        Espero que tengas suerte con eso …

        vallekanoV 1 Respuesta Última respuesta Responder Citar 0
        • vallekanoV
          vallekano @Moebius
          Última edición por

          Esque no entiendo que tabla tienes echa…......

          En donde tienes puesta la variable $sala tiene que ir un nombre de campo, no puede ser una variable.

          No se, como está definida la tabla?

          NiTTAKuN 1 Respuesta Última respuesta Responder Citar 0
          • NiTTAKuN
            NiTTAKu @vallekano
            Última edición por

            segun tengo entendido si que puede ir una variable (que contenga un nombre de campo, claro esta). El problema es que teniendo el nombre de la columna en la que tengo que introducir los datos en una variable, no logro introducirla en la consulta. La tabla tiene campos fecha, hora, 01, 02… asi hasta 10.

            Respecto al mensaje de moebius, la variable es de tipo string, ya que si fuera de tipo numerico quitaria el 0 de delante, de hecho la variable la defino antes como $sala="$_POST[p_sala]"; (p_sala es un valor numerico dado por un formulario)

            vallekanoV 1 Respuesta Última respuesta Responder Citar 0
            • vallekanoV
              vallekano @NiTTAKu
              Última edición por

              En este caso creo que sería como te han dicho, con las comillas.

              Pero de cualquier forma esa tabla no está bien diseñada porque de esos 10 campos (01,02,…...10) siempre va a haber 9 vacios por fila.

              Porque no te creas un solo campo que sea "sala" y en la que metas el 01,02,etc...??? Es como debería ser.

              MoebiusM 1 Respuesta Última respuesta Responder Citar 0
              • MoebiusM
                Moebius @vallekano
                Última edición por

                @vallekano:

                Pero de cualquier forma esa tabla no está bien diseñada porque de esos 10 campos (01,02,…...10) siempre va a haber 9 vacios por fila.

                El diseño de la tabla no es demasiado fino, pero deberia funcionar si pone las comillas al nombre del campo. Si en un futuro alberga muchos registros ocupará mucho mas espacio del que realemente es necesario … pero eso es otro tema

                @NiTTAKu:

                Respecto al mensaje de moebius, la variable es de tipo string, ya que si fuera de tipo numerico quitaria el 0 de delante, de hecho la variable la defino antes como $sala="$_POST[p_sala]"; (p_sala es un valor numerico dado por un formulario)

                El problema no es de el contenido de la variable PHP sino de como Mysql parsea la consulta. Mysql entiende que 01 es un numero y por tanto no un nombre valido de columna.Si pones el nombre entre comilla ('01') lo tomará mysql como un nombre valido. Pruebalo y si falla ya veremos cual es el problema.

                NiTTAKuN 1 Respuesta Última respuesta Responder Citar 0
                • NiTTAKuN
                  NiTTAKu @Moebius
                  Última edición por

                  Por desgracia, sigue sin funcionar con comillas.

                  Respecto al diseño de la tabla se q no es eficiente porque es un simple parche para no modificar la mayor parte de mi codigo ya hecho (tambien se que algunas veces es peor el remedio que la enfermedad), de todas formas decir que SI se deberian de usar todas las columnas, ya que es un supuesto sistema de reservas de entradas para un cine, y a menos que no se venda ninguna entrada si se usarán todas las columnas.

                  MoebiusM 1 Respuesta Última respuesta Responder Citar 0
                  • MoebiusM
                    Moebius @NiTTAKu
                    Última edición por

                    Vaya … apostaba a que esa sería la solución. 😕

                    Cuando me pasan estas cosas sin sentido lo que hago es mostrar el contendio de las variables. En tu caso con un echo $query podras ver el texto exacto de la query que se intenta ejecutar sin exito.
                    Si sigues sin detectar nada raro con la cadena devuelta, prueba a copiarla y ejecutarla directamente en phpmyadmin, y ver si desde allí te da una definición mas clara del error de mysql que se produce.
                    Por ultimo si hasta sigues sin pistas … prueba a hacer esa insercion en phpmyadmin desde la opción insertar registro y compara la cadena que genera la aplicacion (siempre es valida) con la que estas usando. Compara las diferencias y comentanos. 😉

                    NiTTAKuN 1 Respuesta Última respuesta Responder Citar 0
                    • NiTTAKuN
                      NiTTAKu @Moebius
                      Última edición por

                      INSERT INTO entradas (fecha, hora, '01') VALUES ('24-11-2004','4','1') es la consulta ejecutada (con las comillas simples en $sala), y tanto en phpMyAdmin como en MySQL-Front los errores devueltos son siempre el mismo:
                      You have an error in your SQL syntax near '01) VALUES ('24-11-2004','4','1')' at line 1
                      o bien si pongo las comillas a $salas:
                      You have an error in your SQL syntax near ''01') VALUES ('24-11-2004','4','1')' at line 1

                      Ahora bien, phpMyAdmin suelta un numero de error que consultado en la pagina de error hadling de mysql.com es:
                      Error: 1046 SQLSTATE: 3D000 (ER_NO_DB_ERROR) Message: No database selected

                      o lo que es lo mismo, que no selecciona la base de datos entradas, pero ¿porque?

                      MoebiusM 1 Respuesta Última respuesta Responder Citar 0
                      • MoebiusM
                        Moebius @NiTTAKu
                        Última edición por

                        Bufffff … no me di cuenta de algo ... :vayatela: ... el formato de la fecha no es el correcto ... en mysql es "YYYY-MM-DD" y no 'DD-MM-YYYY' como lo tienes en tu consulta. :sisi:

                        A ver si con eso terminamos con el problema ... espero

                        NiTTAKuN 1 Respuesta Última respuesta Responder Citar 0
                        • NiTTAKuN
                          NiTTAKu @Moebius
                          Última edición por

                          tranqui, la columna fecha esta definida como char, no como date, asi que ese no puede ser el problema

                          vallekanoV 1 Respuesta Última respuesta Responder Citar 0
                          • vallekanoV
                            vallekano @NiTTAKu
                            Última edición por

                            Prueba a poner:
                            $query = "INSERT INTO entradas ( fecha, hora, 01) VALUES
                            ('$fecha','$hora','$entradas')";

                            A ver si así lo pilla y por lo menos aislamos el problema.

                            Otra cosa. Está permitido que el nombre de un campo sean solo números?? Yo nunca lo he probado pero puede ser que no te permita que un campo se llame "01".

                            MoebiusM 1 Respuesta Última respuesta Responder Citar 0
                            • MoebiusM
                              Moebius @vallekano
                              Última edición por

                              @vallekano:

                              Otra cosa. Está permitido que el nombre de un campo sean solo números?? Yo nunca lo he probado pero puede ser que no te permita que un campo se llame "01".

                              Si Vallekano, es valido … siempre que mysql lo entienda como texto ... por eso lo de las comillas. Yo he usado una campo que se llamaba 360 (para un campo que almacenaba nombres de imagenes 360º) y solo me dio problemas cuando intente llamarlo en las consultas como 360 y no '360'.

                              El problemilla se esta poniendo peliagudo. Si desde Mysql te da el mismo error, la consulta es erronea. Prueba lo que te dije ... inserta un registro con esos valores en phpmyadmin (previa seleccion de la BD) y observa la consulta que genera y comparala con la tuya.

                              Nos tiene intrigados. :susto:

                              NiTTAKuN 1 Respuesta Última respuesta Responder Citar 0
                              • NiTTAKuN
                                NiTTAKu @Moebius
                                Última edición por

                                Haciendo una insercion desde phpMyAdmin como me aconsejaste he logrado solucionarlo, ahora inserta el registro perfectamente :vayatela:
                                La linea ha quedado tal que asi:
                                $query = "INSERT INTO entradas ( fecha , hora , $sala ) VALUES ( '$fecha', '$hora', '$entradas' )";
                                que comparada a la primera consulta:
                                $query = "INSERT INTO entradas ( fecha, hora, $sala ) VALUES
                                ('$fecha','$hora','$entradas')";

                                solo difiere del tipo de comillas :rolleyes: la verdad que no lo entiendo, pero si funciona, como dice el dicho, NO LO TOQUES xD

                                vallekanoV 1 Respuesta Última respuesta Responder Citar 0
                                • vallekanoV
                                  vallekano @NiTTAKu
                                  Última edición por

                                  Si, el phpmyadmin este pone las comillas esas raras (apostrofes,no?), pero debería de funcionar con las comillas simples de to la vida. Vamos, yo siempre uso las comillas simples.

                                  Sea como sea, me alegro de que esté solucionado.

                                  MoebiusM 1 Respuesta Última respuesta Responder Citar 0
                                  • MoebiusM
                                    Moebius @vallekano
                                    Última edición por

                                    Me alegro de que ya funcione. :sisi:

                                    Como dice Vallekano el tipo de comillas no debe suponer una diferencia, así que no entiendo demasiado bien el problema. 😕

                                    Pero ya sabes … en estos casos "de locos"... conviene copiar la forma en que el propio phpmyadmin hace la consulta :risitas: .

                                    ninchi_punkrockN 1 Respuesta Última respuesta Responder Citar 0
                                    • ninchi_punkrockN
                                      ninchi_punkrock @Moebius
                                      Última edición por

                                      weno, yo no se si estoy mu desfasao en esto, pero le veo unos cuantos errores no?? yo creo que si estás en php lo normal seria
                                      $query= mysql_query ('INSERT INTO tabla VALUES (' ', , ' ',' $CONEX)

                                      las comillas dobles no son aconsejables, y debemos insertar valores en todos los campos, aunque vayan vacíos, eske no se pueden hacer inserciones selectivas de campos salteados…

                                      vallekanoV 1 Respuesta Última respuesta Responder Citar 0
                                      • vallekanoV
                                        vallekano @ninchi_punkrock
                                        Última edición por

                                        No, hay te equivocas.

                                        Tu puedes hacer una inserción en algunos campos solo, siempre y cuando el resto de campos tengan un valor predefinido, o permitan valores nulos.

                                        Por ejemplo lo normal es tener un campo que sea el "ID" de la tabla, y dicho campo se define como clave y que se auto incremente. En ese campo nunca insertarás un valor poruq no sabes cual toca, pero si está definido así MySQL inserta automáticamente el siguiente numerito.

                                        Pues igual con el resto de campos.

                                        Y porque dices que las comillas dobles no son aconsejables???

                                        Además en tu caso daría un error porque te va a tomar varias cadenas:
                                        $query= mysql_query ('INSERT INTO tabla VALUES (' ', , ' ',' $CONEX)

                                        1. 'INSERT INTO tabla VALUES ('
                                        2. ', , '
                                        3. ','
                                        4. $CONEX)

                                        Pero que no están concatenadas asique se va a hacer la picha un lio.

                                        Creo que no es que estés desfasado, esque o no sabes o no te acuerdas xDxD

                                        ninchi_punkrockN 1 Respuesta Última respuesta Responder Citar 0
                                        • ninchi_punkrockN
                                          ninchi_punkrock @vallekano
                                          Última edición por

                                          ke yo no se php??? el ke se está ekivocando eres tú

                                          1.- Siempre tienes ke insertar todos los campos, y si alguno no te interesan los tienes ke insertar vacíos (siempre ke en la tabla te permitan los nulls)
                                          2.- Las ' ', y eso lo he puesto como demostración, indicando que cuando introduzcamos caracteres hay ke poner ' ' y cuando sean datos enteros o float no se pone nada.
                                          3.- Totalmente prohibido comillas dobles cuando programemos html y php mixto. Porque, dirás tu???
                                          Pues porque cuando estamos en php y abrimos html, debemos poner echo" …..................."; Y si nosotros en php abrimos comillas "", este se va a creer ke lo ke va después es código html cuando no lo va a ser... hombre pofavó!!!jeje

                                          ninchi_punkrockN vallekanoV 2 Respuestas Última respuesta Responder Citar 0
                                          • ninchi_punkrockN
                                            ninchi_punkrock @ninchi_punkrock
                                            Última edición por

                                            y ademas, ese nota creo ke se está ekivocando porke kiere insertar en el campo $sala un valor, y un campo ke sea variable sala no lo veo yo mu bien eso, no sé…

                                            vallekanoV 1 Respuesta Última respuesta Responder Citar 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post

                                            Foreros conectados [Conectados hoy]

                                            1 usuarios activos (0 miembros e 1 invitados).
                                            febesin, pAtO, cobito

                                            Estadísticas de Hardlimit

                                            Los hardlimitianos han creado un total de 543.3k posts en 62.8k hilos.
                                            Somos un total de 34.8k miembros registrados.
                                            seaofink ha sido nuestro último fichaje.