Foros del Web » Programando para Internet » PHP »

ERROR al ingresar valores en la BD

Estas en el tema de ERROR al ingresar valores en la BD en el foro de PHP en Foros del Web. Este script me funcionaba perfecta mente y de repente ya no quiere ingresar los datos y tampoco me da ningún error le pongo el código ...
  #1 (permalink)  
Antiguo 19/03/2016, 21:34
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
ERROR al ingresar valores en la BD

Este script me funcionaba perfecta mente y de repente ya no quiere ingresar los datos y tampoco me da ningún error le pongo el código a ver que pasa esto no me gusta que pase no me da la lógica y menos si no me pone ningún error

Código PHP:
Ver original
  1. <?php
  2. if(!isset($_POST['rpass'])){  //script por si alguien tinetenta entrar a la web por el link lo redireciona
  3. header('Location: ../index.php');
  4. exit();
  5. }
  6. ?>
  7.  
  8. <?php
  9. if(isset($_POST['nick']) && isset($_POST['pass']) && isset($_POST['rpass']) && isset($_POST['email'] ))  //busaca si las variables Post estan
  10. {
  11.     $ip = $_SERVER['REMOTE_ADDR'];  //agregar IP
  12.    
  13.     $fecha_hora = date('d-m-Y H:i:s');  
  14.     $nick  = $_POST['nick']; //atrapa las variables POST
  15.     $pass  = $_POST['pass'];
  16.     $rpass  = $_POST['rpass'];
  17.     $email  = $_POST['email'];
  18.  
  19. if (empty($_POST['nick']) or empty($_POST['pass']) or empty($_POST['rpass']) or empty($_POST['email'])){
  20. $array = array($nick,$pass,$rpass, $email); //validacion de campos
  21.  
  22.     if ($array[0] == NULL)  //si estan vacias
  23.     {
  24.     echo "nick vacio<br>"; 
  25.     }
  26.     if ($array[1] == NULL)
  27.     {
  28.      echo "pass vacio <br>";   
  29.     }
  30.     if ($array[2] == NULL)
  31.     {
  32.      echo "rpass vacio <br>";  
  33.     }
  34.     if ($array[3] == NULL)
  35.     {
  36.      echo "email vacio <br>";  
  37.     }
  38.     }else  // si no estan vacias corre el script
  39.     {  
  40.         if ($pass === $rpass ) //verifica si pass es igual a pass
  41.         {                                      
  42.             require("../../conexion/conexion.php");                                 //busca el file php para conectarse a la base de datos
  43.             //(DESASTIVADO)$pass = md5 ($pass);                         // encrista la clave
  44.             mysql_query("INSERT INTO usuarios VALUES ('',' $ip','$fecha_hora','$nick',' $pass',' $email' )"); //           //HAce la consulta a la base de datos para introducir los datos
  45.             mysql_close($link);                                         //cerramos las conecion la conecios se encuentra en el archivo connect_db.php que es invocado por required linea 9
  46.             header("location: confirmacion.php");
  47.  
  48.         }
  49.         else {
  50.             echo 'Los pass no son iguales';
  51.     }
  52. }
  53.  
  54. }
  55.  
  56. ?>

me retrasa tanto

este es el formulario

Código HTML:
Ver original
  1. <form action="funciones/registro/registro.php" method="POST">
  2.     Nick: <input type="text" name="nick"  /><br> <!--required para validar los campos no pasa si no esta lleno-->
  3.     Password: <input type="password" name="pass"  /><br>
  4.     Repeat Password: <input type="password" name="rpass"   /><br>
  5.     Email: <input type="email" name="email"/><br>
  6.     <input type="submit" name="submit" value="Registrarse" />
  7.     </form>
  #2 (permalink)  
Antiguo 19/03/2016, 21:53
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: ERROR al ingresar valores en la BD

No te da error porque puede que todo esté bien, salvo la consulta.

Código PHP:
Ver original
  1. $insert = mysql_query("INSERT INTO usuarios VALUES ('',' $ip','$fecha_hora','$nick',' $pass',' $email' )");
  2.  
  3. if (!$insert) {
  4.     die('Error en Consulta: ' . mysql_error());
  5. }

Prueba así, tiene que mandarte el error que provoca mysql.
  #3 (permalink)  
Antiguo 19/03/2016, 22:23
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

dice esto como que no marcha con el valor de la linea 1

Error en Consulta: Column count doesn't match value count at row 1


no se que haCER.
Ayer lo deje todo funcionando y ahora cuando prendo el host y intento probar me sale con esto >:(

esto son los valores de la base de datos

1 idPrimary int(33) No None AUTO_INCREMENT

que puedo hacer ?

Última edición por wilson_romero; 19/03/2016 a las 22:37
  #4 (permalink)  
Antiguo 19/03/2016, 22:43
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, 5 meses
Puntos: 2658
Respuesta: ERROR al ingresar valores en la BD

Ese mensaje dice que la cantidad de columnas de la tabla no coincide con la cantidad de datos del VALUES.
Si la cantidad de datos es correcta, entonces al menos uno se está corrompiendo.
Por otro lado le veo al menos un defecto a esa definición de tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/03/2016, 22:48
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: ERROR al ingresar valores en la BD

El autoincrement suponiendo que es tu pk no tienes por qué ponerle ' ', con ello le estás indicando que ingrese un espacio a dicho campo, lo cuál mysql lo toma como error. Lo que me extraña es que te haya estado funcionando

Tienes que omitir el ingreso de ese dato, y como dice @gnzsoloyo, la tabla en tan solo esa columna tiene defectos. Saludos
  #6 (permalink)  
Antiguo 20/03/2016, 09:16
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, 5 meses
Puntos: 2658
Respuesta: ERROR al ingresar valores en la BD

Cita:
Iniciado por wilson_romero Ver Mensaje
dice esto como que no marcha con el valor de la linea 1

Error en Consulta: Column count doesn't match value count at row 1


no se que haCER.
Ayer lo deje todo funcionando y ahora cuando prendo el host y intento probar me sale con esto >:(

esto son los valores de la base de datos

1 idPrimary int(33) No None AUTO_INCREMENT

que puedo hacer ?
Volviendo a lo que dije, y confirmándote lo que te dice rodocoyote15, el mensaje de error que devuelve MySQL es específicamente lo que te comento: el INSERT que pones envía seis datos, y tu table debe tener una cantidad diferente.
Si la cantidad de colunas es realmente la misma, lo que puede pasar es que uno de lso campos se haya corrompido por los datos que contiene, y genere un error de sintaxis indetectable sin debuggear.
Esto se produce por ejemplo cuando pones números con decimales donde usas coma y no punto, dado que la coma es un separador de campos en SQL y se debe usar punto en las queries. Cuando eso pasa el DBMS (todos) interpreta que la parte entera y la decimal son campos separados.
En tu caso no parece ser eso, pero sin ver el dato real que mandas en cada campo no se puede afirmar nada.

Ahora bien, lo mínimo es que verifiques lo que estás intentando enviar a la base con un echo, para lo cual las buenas prácticas dicen que NO PONGAS las queries directamente el las llamadas, sino en variables, cosa de poder analizarlas:
Código PHP:
$sql "INSERT INTO usuarios VALUES ('',' $ip','$fecha_hora','$nick',' $pass',' $email' )";
echo 
$sql;
$insert mysql_query($sql); 
 
if (!
$insert) {
    die(
'Error en Consulta: ' mysql_error());

POr otro lado, como ya de fijeron, no puedes enviar un caracter en blanco ni un vacío a un auto_increment, esos son caracteres y pueden disparar errores en ese caso. Además, lo que mysql espera es en todo caso un NULL, no un caracter. Pero ten en cuenta que debe ir NULL de SQL y no la palabra "NULL".

Código PHP:
$sql "INSERT INTO usuarios VALUES (NULL, '$ip', '$fecha_hora', '$nick', ' $pass', '$email')";
echo 
$sql;
$insert mysql_query($sql); 
 
if (!
$insert) {
    die(
'Error en Consulta: ' mysql_error());


Ademas de eso, ten cuidado al dejar espacios en blanco en las cadenas generadas de los valores, porque esos espacios (sobre todos los iniciales) pasarán al contenido de la base.
Lo digo porque estabas dejando un espacio en blanco delante de IP y del e-Mail.

Finalmente, ese INT(33) está muy mal escrito. Ese (33) es basura pura, porque ese valor no indica la cantidad de dígitos representables, que de todos modos en un INT no puede ser mayor a 11. Se usa para otra cosa y puede generar errores de representación luego en las consultas si usas VIEWs o realizas backups.
Para detalles de ese tipo, por favor, pregunta en el foro de BBDD, o lee el manual de referencia, que tiene un capitulo entero dedicado a los tipos de columna.

Para despejar dudas podrías postearnos lo que devuelve esto, así vemos realmente como es esa tabla:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE usuarios;
Ejecútalo en el phpMyadmin y postea el resultado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 20/03/2016, 09:39
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

Le quiero agradecer mucho a a ustedes gnzsoloyo siempre metiendo me la mano mucha gracias de verdad.

ya hice los cambio que me dicen el error era como dice gnzsoloyo en cuando a 1 idPrimary int(33) No None AUTO_INCREMENT era que tenia una tabla que no definia en la consulta Query
puse el campo que le faltaba ahora tien otro error es este

Error en Consulta: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '::1','img,'20-03-2016 16:31:58','will','a','s@s' )' at line 1

esta es la nueva consulta
Código PHP:
Ver original
  1. $insert=mysql_query("INSERT INTO usuarios VALUES ('','$ip','img,'$fecha_hora','$nick','$pass','$email' )");

esta es la estrutura de la tabla
idPrimary int(11) No None AUTO_INCREMENT
ip varchar(20) No None
img varchar(100) No img/people.jpg
fecha_hora varchar(30) No None
nick varchar(100) No None
pass varchar(100) No None
email varchar(100) No None

Última edición por wilson_romero; 20/03/2016 a las 10:09
  #8 (permalink)  
Antiguo 20/03/2016, 10:15
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, 5 meses
Puntos: 2658
Respuesta: ERROR al ingresar valores en la BD

Cita:
esta es la estrutura de la tabla
Si te puse esa query con SHOW es porque un DESCRIBE no contiene la información que quiero ver.
Ejecuta el SHOW que te dije y postea el resultado.

Respecto al error que te aparece, es parcialmente claro lo que pasa:
Código MySQL:
Ver original
  1. '::1','img,'20-03-2016 16:31:58','will','a','s@s' )
¿Alcanzas a ver cómo se han quebrado las cadenas, y la fecha ha quedado fuera de los apóstrofos?
Bueno, es porque la cadena del IMG no está cerrada correctamente.
TE recomiendo construir las sentencias antes de usarlas utilizando una herramienta con correctos sintáctico, sea para solo PHP como para SQL. Evitarás errores elementales de tipeo como ese.

Ten en cuenta que no hasta con que tomes los mensajes de error. Tienes que analizar la respuesta tu mismo para entender POR QUÉ se produce.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 20/03/2016, 10:21
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: ERROR al ingresar valores en la BD

Es fácil. La palabra 'img' no la estás encerrando entre comillas. Sólo abres más no cierras. Te aconsejo también que uses un editor de auto completado de etiquetas, como Sublime Text, para evitar estos errores.

Por otra parte, guardar fechas y horas en campos varchar es una pésima práctica que a la larga te dará errores. Para ello están los correspondientes tipos de columna.

Edito. Cuando llegue a la uni y haga mi tesis, mis agradecimientos iran para varios de aqui, incluido @gnzsoloyo, qué grande eres :D
  #10 (permalink)  
Antiguo 20/03/2016, 10:29
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

Muchas gracias ya funciona
rodocoyote15 uso sublime text pero no me corrige esos errores tengo que bajar un pluguin para que me lo corrija, aveces veo video y veo que el sublime escribe casi todo el codigo si escribo por ejemplo el metodo POST el no me da sugerencia pero si ya lo escribo luego si me psa con null true y cosas así
  #11 (permalink)  
Antiguo 20/03/2016, 10:37
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, 5 meses
Puntos: 2658
Respuesta: ERROR al ingresar valores en la BD

Cita:
Iniciado por wilson_romero Ver Mensaje
Muchas gracias ya funciona
rodocoyote15 uso sublime text pero no me corrige esos errores tengo que bajar un pluguin para que me lo corrija, aveces veo video y veo que el sublime escribe casi todo el codigo si escribo por ejemplo el metodo POST el no me da sugerencia pero si ya lo escribo luego si me psa con null true y cosas así
Ten en cuenta que el SublimeText no está realmente orientado al SQL, por lo que embeber SQL en código PHP requiere manejarlo con cuidado.

Por otro lado, lo que te dijo rodocoyote15 es correcto: NO se debe usar un VARCHAR para guardar un DATETIME, es un error de los graves a nivel BBDD. Para algo existe el tipo de columna DATETIME.
No es lo mismo, no tiene la misma longitud, y podrías ingresar un dato ilegal sin ningún problema si no realizas las validaciones adecuadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 20/03/2016, 13:01
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

gnzsoloyo lo cambie a date time y no me grabo la fecha le quite las variables en el codigo y nada no se como usar eso de dete time
  #13 (permalink)  
Antiguo 20/03/2016, 13:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: ERROR al ingresar valores en la BD

Hola wilson_romero,

Yo lo que veo, aparte de lo que ya te han dicho los expertos, es que creo sería mejor concatenar las variables:

Código PHP:
Ver original
  1. $insert=mysql_query("INSERT INTO usuarios VALUES ('','"  . $ip . "','" . $img . "','" . $fecha_hora . "','" . $nick . "','" . $pass . "','" . $email . "' )");

Por otra parte ¿recibes y validas correctamente la recepción de las variables $_POST? Ya sabes eso de

Código PHP:
Ver original
  1. if ( isset($_POST['variable']) && !empty($_POST['variable']) ) {
  2. $variable = $_POST['variable'];
  3. }

Espero que te ayude a encontrar la solución...
  #14 (permalink)  
Antiguo 20/03/2016, 15:22
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, 5 meses
Puntos: 2658
Respuesta: ERROR al ingresar valores en la BD

Cita:
Iniciado por wilson_romero Ver Mensaje
gnzsoloyo lo cambie a date time y no me grabo la fecha le quite las variables en el codigo y nada no se como usar eso de dete time
En primer lugar, debes recordar que MySQL y ningún DBMS interpreta las variables de PHP. Con PHP se construye una cadena de texto que contiene una sentencia de SQL, y por consecuencia, los datos insertados en las variables deben tener el formato y tipo de dato que correspondan a la base de datos .
En el caso de las fechas en MySQL, los campos DATETIME, DATE o TIMESTAMP requieren que la fecha tenga el formado AAAA-MM-DD.
Para que te quede claro: Esto genera un objeto de tipo date con un cierto formato:
Código PHP:
Ver original
  1. $fecha_hora = date('d-m-Y H:i:s');

Pero cuando lo insertas en la query de SQL, la fecha pasa a tener la forma seteada.. que no es correcta.
Código PHP:
Ver original
  1. 20-03-2016 14:27:55
y eso funciona mal en la query.

DEbe ser:
Código PHP:
Ver original
  1. $fecha_hora = date('Y-m-d H:i:s');
Haz por lo menos lo que te digo:
1) No construyas las sentencias directamente en el mysql_query. Hazlo en variables de string para poder verificarlas fácilmente.
2) Has un echo para que te muestre lo que se generó, al menos mientras lo estás desarrollando.
3) Muy importante, como ya te dijeron: verifica que los valores del formulario realmente han llegado. No sería la primera vez que alguien cree recibir algo que en realidad no está llegando (es el error más común de todos).

Ten en cuenta una regla básica: No porque esté bien escrito no significa que no haya errores de datos o de lógica. Debes verificar SIEMPRE.

Finalmente: ¿en qué parte de este código estás verificando que realmente se haya insertado exitosamente algo?:
Código PHP:
Ver original
  1. {                                      
  2.             require("../../conexion/conexion.php");
  3.             mysql_query("INSERT INTO usuarios VALUES ('',' $ip','$fecha_hora','$nick',' $pass',' $email' )");
  4.             mysql_close($link);  
  5.             header("location: confirmacion.php");
  6.  
  7.         }

En realidad, en ninguna.
Código PHP:
Ver original
  1. {                                      
  2.             require("../../conexion/conexion.php");
  3.             $resultado = mysql_query("INSERT INTO usuarios VALUES ('',' $ip','$fecha_hora','$nick',' $pass',' $email' )");
  4.             if(!$resultado)
  5.              {echo "Error al insertar el registro:".mysql_error();
  6.                   }
  7.  
  8.         }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 20/03/2016 a las 15:32
  #15 (permalink)  
Antiguo 22/03/2016, 19:19
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

por que es mejor concatenar las variables rbczgz

gnzsoloyo
lo estoy confirmando en otra pagina que lo envía con un header

header("location: confirmacion.php");

lo del tiempo lo puse como dijiste lo que paso fue que cambio las fecha en el sentido de orden sigue con problema en la hora.
el tiempo creo que es la configuracion del php.ini del xampp que es mi servidor local el problema que tengo es que tengo que ponerle en


[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =


en este código donde dice ;date.timezone =
tengo que agregar zona del area

le puse una que encontré aqui
pero no se reparo

Última edición por wilson_romero; 22/03/2016 a las 20:43
  #16 (permalink)  
Antiguo 23/03/2016, 02:43
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: ERROR al ingresar valores en la BD

Cita:
Iniciado por wilson_romero Ver Mensaje
por que es mejor concatenar las variables rbczgz
Porque los valores deben ir entre ' (comillas simples) excepto los numéricos y si no las concatenas, no les puedes poner las ' '.
  #17 (permalink)  
Antiguo 24/03/2016, 19:50
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

Cita:
Iniciado por rbczgz Ver Mensaje
si no las concatenas, no les puedes poner las ' '.
pero para que les voy a poner las '' si me funciona bien.

si no le pongo las comillas no la puedo usar en otra cosa ?

quieres que los concatenes asi

Código PHP:
Ver original
  1. $insert=mysql_query("INSERT INTO usuarios VALUES ('','"  . $ip . "','" . $img . "','" . $fecha_hora . "','" . $nick . "','" . $pass . "','" . $email . "' )");

pero de igual forma em funcioana asi y me ahorro letras que son bit

Código PHP:
Ver original
  1. $insert=mysql_query("INSERT INTO usuarios VALUES ('','"  . $ip . "','" . $img . "','" . $fecha_hora . "','" . $nick . "','" . $pass . "','" . $email . "' )");
en verdad lo hice asi por eso por ahorrar
si no la contateno no puedo sacar el valor ?
  #18 (permalink)  
Antiguo 24/03/2016, 20:36
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: ERROR al ingresar valores en la BD

wilson, hay veces que no te entiendo nada
  #19 (permalink)  
Antiguo 25/03/2016, 03:03
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: ERROR al ingresar valores en la BD

Hola wilson_romero,

El concatenar es para enviar los valores que no son numéricos entre '' (comillas simples) ya que, en caso contrario, lo más probable es que te de algún error, si no concatenas, no le puedes poner las comillas simples, pero debes tener en cuenta que los valores numéricos no llevan comillas simples.
  #20 (permalink)  
Antiguo 25/03/2016, 17:53
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 4 meses
Puntos: 4
Respuesta: ERROR al ingresar valores en la BD

yo registre un usuario con valores numéricos y se registro y sin valores numéricos no veo la diferencia y no me da error
  #21 (permalink)  
Antiguo 27/03/2016, 16:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: ERROR al ingresar valores en la BD

Hola wilson_romero,

Es que también depende de cómo tengas configurada tu base de datos, qué tipos de datos le has asignado a cada campo, etc... Pero en fin, si te funciona igual, pues no hace falta que cambies nada...

No obstante, yo me fijaría muy detenidamente en los consejos que te da gnzsoloyo que es un gran experto en bases de datos, sin desmerecer al resto, claro.
  #22 (permalink)  
Antiguo 28/03/2016, 06:59
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, 5 meses
Puntos: 2658
Respuesta: ERROR al ingresar valores en la BD

Cita:
Iniciado por wilson_romero Ver Mensaje
por que es mejor concatenar las variables rbczgz

gnzsoloyo
lo estoy confirmando en otra pagina que lo envía con un header

header("location: confirmacion.php");

lo del tiempo lo puse como dijiste lo que paso fue que cambio las fecha en el sentido de orden sigue con problema en la hora.
el tiempo creo que es la configuracion del php.ini del xampp que es mi servidor local el problema que tengo es que tengo que ponerle en


[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =


en este código donde dice ;date.timezone =
tengo que agregar zona del area

le puse una que encontré aqui
pero no se reparo
Por empezar, la confirmación a la que yo me refiero es para validar si la query funcionó bien, y no para confirmar al usuario nada. Además sin ver el código de confirmacion.php, no puedo saber si contiene realmente lo que estoy diciéndote yo.
Código que no vemos es código que no nos sirve para evaluar nada...

Por otro lado, cuando te digo:

Cita:
En el caso de las fechas en MySQL, los campos DATETIME, DATE o TIMESTAMP requieren que la fecha tenga el formado AAAA-MM-DD.
no me estoy refiriendo a que modifiques nada en el servidor, sino que codifiques de tal forma que no tengsas que depender de esa configuración, y que además tengas en cuenta que PHP no dialoga con MySQL, y por tanto las sentencias SQL deben ser construidas correctamente para MySQL.
La idea final es que la query que queda armada debe respetar el formato que MySQL espera: AAAA-MM-DD, y no otro, sin importar cual sea. Y que además el tipo de dato de la columna sea también el correcto.

¿Se entiende?

No pienses en el SQL como algo integrado a PHP porque tal cosa no existe. Son independientes y debes pensarlas como tales.

Algunas notas adicionales:
Cita:
pero para que les voy a poner las '' si me funciona bien.
POrque en realidad si pones las cosas sin apostrofos no es que funcionen bien. En ciertos contextos pueden generar errores, como por ejemplo las fechas. Además "ahorrar bits" (en realidad bytes) es un mal pretexto para poner o no poner cosas. La codificación debe respetar buenas prácticas, y por sobre todo prácticas mantenibles que permitan un optimo mantenimiento, debuggeo y solidez de código, cosas que para las cuales tales "ahorros" conspiran en contra en el mediano y largo plazo.

Cita:
yo registre un usuario con valores numéricos y se registro y sin valores numéricos no veo la diferencia y no me da error
Poner entre apostrofos los valores numéricos es un mvicio y un error. MySQL interpretará el contenido como dato válido, aunque llegue sin datos, lo cual termina escondiendo errores de otras partes del código, que de no poner los apostrofos dispararían errores de sintaxis que se usan para detectar errores en la entrada de datos.
En otras palabras, es un mal habito poner datos numéricos entre apostrofos. Evita descubrir los errores, y los resultado se interpretan como defectos de la base, cuando son de PHP.
No confundas la posibilidad de conversiones implícitas de MySQL con un buen funcionamiento de tu programación. No es lo mismo.

Ahora bien, ¿cual es el status actual de tu problema?
¿Pudiste encontrar el inconveniente, lo solucionaste o lo parchaste?

¿Podrías postear el código de ese "confirmacion.php" para ver lo que realmente haces alli?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bd, fecha, mysql, usuarios, variable
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 09:36.