Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Fallo al intentar grabar datos en Base de Datos

Estas en el tema de Fallo al intentar grabar datos en Base de Datos en el foro de PHP en Foros del Web. Buen día. Tengo el siguiente código: Código PHP:                        mysql_connect ( "localhost" ,  "root" ,  "" );      $conexionMySQL  =  mysql_connect ( "localhost" ,  "root" ,  ...
  #1 (permalink)  
Antiguo 09/10/2013, 13:50
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Fallo al intentar grabar datos en Base de Datos

Buen día.

Tengo el siguiente código:
Código PHP:
                       mysql_connect("localhost""root""");
    
$conexionMySQL mysql_connect("localhost""root""");
    
    if ( 
$conexionMySQL )
    {
        
$insertarRegistro "INSERT INTO `perfilpersonologico`.`personasregistradasparaperfil` (`id`, `Nombre`, `Apellidos`, `Email`, `Pais`, `Ciudad`, `Dia`, `Mes`, `Anio`, `Hora`, `Minuto`) VALUES ('', 'Fulano', 'Mendoza', '[email protected]', 'Atenas', 'Grecia', '01', '10', '2000', '00', '59')"// Sólo me funciona si pongo `` (son acentos) en vez de ''
        
        
echo 'PHP logró establecer conexión con MySQL<br /><br />';
        
mysql_select_db("perfilpersonologico"$conexionMySQL);
        
$datos mysql_query($insertarRegistro$conexionMySQL) or die( mysql_error() );
        
        if (
$datos)
        {
            echo 
"El registro se guardó correctamente<br /><br />";
        }
    }
    else
    {
        echo 
'Conexión fallida con MySQL';
    } 

Esto funciona perfecto: se graba un nuevo registro en la Base de datos.

Ahora supongamos que tenemos un formulario HTML cuyo action dirije al archivo PHP que contiene el código de arriba, y que queremos que los datos que se introduzcan en los inputs de este formulario sean los que se graben en un nuevo registro de la Base de datos.

Para esto, hago una modificación a la variable $insertarRegistro:

Código PHP:
$insertarRegistro "INSERT INTO `perfilpersonologico`.`personasregistradasparaperfil` (`id`, `Nombre`, `Apellidos`, `Email`, `Pais`, `Ciudad`, `Dia`, `Mes`, `Anio`, `Hora`, `Minuto`) VALUES ('', $nombre, $apellidos, $email, $pais, $ciudad, $fechaNacDia, $fechaNacMes, $fechaNacAno, $horaNacHora, $horaNacMins)"//En VALUES, las 1ras comillas las pongo vacías pq el campo de ID lo puse como autoincremento, para no incrementarlo yo 
El resultado es que NO se guarda el registro. En el browser sale el sig error: "Algo está equivocado en su sintaxis acerca: 'Fulano, [email protected], Grecia, Atenas, 15, 08, 1979, 19, 35)' en la linea 1". Estos datos son los que metí en el formulario.

¿Por qué me devuelve el error y cómo solucionarlo?



De antemano, gracias.

Última edición por berkeleyPunk; 09/10/2013 a las 13:55
  #2 (permalink)  
Antiguo 09/10/2013, 14:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Fallo al intentar grabar datos en Base de Datos

Código PHP:
Ver original
  1. $insertarRegistro = "INSERT INTO `perfilpersonologico`.`personasregistradasparaperfil` (`Nombre`, `Apellidos`, `Email`, `Pais`, `Ciudad`, `Dia`, `Mes`, `Anio`, `Hora`, `Minuto`) VALUES ('$nombre', '$apellidos', '$email', '$pais', '$ciudad', $fechaNacDia, $fechaNacMes, $fechaNacAno, $horaNacHora, $horaNacMins)";
- MySQL no interpreta PHP. Que para PHP sea una cadena de texto no implic que MySQL lo tome como tal. Estás armando sentencias como strings, y enviando esos strings a MySQL. Respeta la sintaxis de SQL:
- Si la lista de campos la vas a poner manualmente, omite el campo autoincremental, y el valor.
- Las cadenas de texto van entre apostrofos (').
- Los nombres de tablas, campos o bases pueden ir entre acentos agudos. No es obligatorio salvo que uses palabras reservadas.
- Los numeros deben ir sin apostrofos.
- En las bases de datos existe un tipo específico para fechas, te conviene usarlo, recordando que el formato es AAAA-MM-DD, y para recuperarlo luego existen funciones que te pueden mostrar ese valor como DD/MM/AAAA.
- Captura los errores devueltos por la base. Ayuda a saber qué sucede y qué hay que hacer.
- Despliega en pantalla la query creada para probarla luego manualmente. La mayor parte de los errores se ve allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/10/2013, 16:02
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Fallo al intentar grabar datos en Base de Datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
- MySQL no interpreta PHP. Que para PHP sea una cadena de texto no implic que MySQL lo tome como tal. Estás armando sentencias como strings, y enviando esos strings a MySQL. Respeta la sintaxis de SQL...
Muchas gracias por responder maestro gnzsoloyo.
En atención a tus indicaciones, modifiqué la variable $insertarRegistro así:

Código PHP:
$insertarRegistro "INSERT INTO `perfilpersonologico`.`personasregistradasparaperfil` (`id`, `Nombre`, `Apellidos`, `Email`, `Pais`, `Ciudad`, `Dia`, `Mes`, `Anio`, `Hora`, `Minuto`) VALUES ('', '$nombre', '$apellidos', '$email', '$pais', '$ciudad', '$fechaNacDia', '$fechaNacMes', '$fechaNacAno', '$horaNacHora', '$horaNacMins')"
Ahora sí se guardan los registros .

Ya nada más para terminar, igual y me puedes ayudar con algo de phpMyAdmin:

Si borro todos los registros de phpMyAdmin y ejecuto la aplicación PHP para insertar un nuevo registro, resulta que este nuevo registro aparece con un número de ID (que lo pone automáticamente el phpMyAdmin) que sigue después de los que borré y no reinicia desde cero, como uno esperaría. ¿Cómo le hago para que reinicie a cero si borró todos los registros?

Saludos

Última edición por berkeleyPunk; 09/10/2013 a las 16:24
  #4 (permalink)  
Antiguo 09/10/2013, 16:59
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: Fallo al intentar grabar datos en Base de Datos

Cita:
Iniciado por berkeleyPunk Ver Mensaje
Muchas gracias por responder maestro gnzsoloyo.
En atención a tus indicaciones, modifiqué la variable $insertarRegistro así:

Código PHP:
$insertarRegistro "INSERT INTO `perfilpersonologico`.`personasregistradasparaperfil` (`id`, `Nombre`, `Apellidos`, `Email`, `Pais`, `Ciudad`, `Dia`, `Mes`, `Anio`, `Hora`, `Minuto`) VALUES ('', '$nombre', '$apellidos', '$email', '$pais', '$ciudad', '$fechaNacDia', '$fechaNacMes', '$fechaNacAno', '$horaNacHora', '$horaNacMins')"
Ahora sí se guardan los registros .

Ya nada más para terminar, igual y me puedes ayudar con algo de phpMyAdmin:

Si borro todos los registros de phpMyAdmin y ejecuto la aplicación PHP para insertar un nuevo registro, resulta que este nuevo registro aparece con un número de ID (que lo pone automáticamente el phpMyAdmin) que sigue después de los que borré y no reinicia desde cero, como uno esperaría. ¿Cómo le hago para que reinicie a cero si borró todos los registros?

Saludos
Respondiendo tu pregunta:

Cuando borras las filas en phpMyAdmin al seleccionarlas, lo que hace phpMyAdmin es que borra las filas utilizando consultas "DELETE FROM Tabla..."

Estas consultas no reinician el contador interno de la tabla.

si vas a eliminar todos los registros para reiniciar tu contador, entonces trunca la tbala con el comando:

Código MySQL:
Ver original
  1. TRUNCATE TABLE `Tabla`

Si solamente quieres reiniciar el contador interno:

Código MySQL:
Ver original 
  #5 (permalink)  
Antiguo 09/10/2013, 17:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Fallo al intentar grabar datos en Base de Datos

Como nota a lo que ya te dijeron: Según el manual de referencia, el auto_increment se reinicia con TRUNCATE si y sólo si son tablas de tipo InnoDB, las MySQL requieren reinicio manual co ALTER TABLE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/10/2013, 17:31
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Fallo al intentar grabar datos en Base de Datos

Cita:
Iniciado por AlanChavez Ver Mensaje
Respondiendo tu pregunta:
...
si vas a eliminar todos los registros para reiniciar tu contador, entonces trunca la tbala con el comando:

Código MySQL:
Ver original
  1. TRUNCATE TABLE `Tabla`

Si solamente quieres reiniciar el contador interno:

Código MySQL:
Ver original 
Gracias maestro AlanChavez, reinicié el contador interno con ALTER TABLE.

Bueno, eso es todo por el momento. Regresaré a Foros del Web cuando haya algún otro problema que no sepa cómo responder, ni con ayuda de un buscador.

Etiquetas: Ninguno
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 17:50.