Foros del Web » Programando para Internet » PHP »

Mysql Insert

Estas en el tema de Mysql Insert en el foro de PHP en Foros del Web. Hola....tengo un problema al insertar datos con mysql...si bien el problema no es de conexion o sintaxis...es igualmente raro.... resulta que al realizar la consulta ...
  #1 (permalink)  
Antiguo 18/06/2011, 13:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Mysql Insert

Hola....tengo un problema al insertar datos con mysql...si bien el problema no es de conexion o sintaxis...es igualmente raro....
resulta que al realizar la consulta para insertar los datos con 5 variables utilizando el siguiente formato en codigo php

protocolo de conexion..
...
...
...
INSERT INTO nombre tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES (valor1,valor2,valor3,valor4,valor5)

no hay problemas para las cuatro primeras variables...pero para la variable5 aparece NULL en la tabla en lugar del valor5...

aclaro que el valor5 de la variable5 existe.

Espero haber sido claro con la explicación...ojalá puedan darme una idea.

Gracias.
  #2 (permalink)  
Antiguo 18/06/2011, 13:56
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Mysql Insert

Hola que tal alecros.

Puedes mostrar tu codigo para ayudarte mejor, ya que de esa forma podermos enternder mejor.

Saludos.
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 18/06/2011, 14:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Mysql Insert

Hola skiper...si acá pego el código...

$con = mysql_connect("localhost","root","clave");

if( !$con ) {
die( "ERROR. " . mysql_error() );
}
$status = explode( ' ', mysql_stat($con) );
print_r( $status );

mysql_select_db('base datos',$con);

mysql_query("INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ('{$valor1}','{$valor2}','{$valor3}','{$valor4}',' {$valor5}')",$con);

mysql_close( $con );

Gracias por responder.
  #4 (permalink)  
Antiguo 18/06/2011, 14:44
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Mysql Insert

Hola que tal alecros

Prueba est codigo y me dices que pasa

Código PHP:
Ver original
  1. $con = mysql_connect("localhost","root","clave") or die ("Error en el servidor: ".mysql_error());
  2. mysql_select_db('base datos',$con) or die ("Error en la DB: ".mysql_error());
  3.  
  4. $sql=mysql_query("INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ('{$valor1}','{$valor2}','{$valor3}','{$valor4}',' {$valor5}')",$con);
  5.  
  6. mysql_close( $con );

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #5 (permalink)  
Antiguo 18/06/2011, 16:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Mysql Insert

Hola Skiper...hice lo que me dijiste pero sigue pasando lo mismo......
realmente no se que pueda ser....el valor de la última variable aparece como NULL en la base de datos cuando quiero recuperarlos.....

Gracias de todos modos...si hay alguna otra sugerencia, será bienvenida.
  #6 (permalink)  
Antiguo 18/06/2011, 16:20
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Mysql Insert

Haber pueba con esto

Código PHP:
Ver original
  1. $con = mysql_connect("localhost","root","clave") or die ("Error en el servidor: ".mysql_error());
  2. mysql_select_db('base datos',$con) or die ("Error en la DB: ".mysql_error());
  3. $sql=mysql_query("INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ('$valor1','$valor2','$valor3','$valor4','$valor5')") or die ("Error en el query; ".mysql_error());
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #7 (permalink)  
Antiguo 18/06/2011, 16:26
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Mysql Insert

Saludos alecros, te propongo ir un paso mas atrás.
prueba
Código PHP:
echo "$variable5"
Quizás descubras que la variable en cuestión no esta presente, quizás (a mi me pasa a menudo) haz olvidado nombrar correctamente el text area (o algo similar) en el formulario.
__________________
La ciencia al poder. Pazciencia ya viene
  #8 (permalink)  
Antiguo 18/06/2011, 19:03
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Mysql Insert

Holas,

Imprime todo tu SQL mas o menos asi:

Código PHP:
Ver original
  1. die("INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ('$valor1','$valor2','$valor3','$valor4','$valor5')");
Saludos
Gildus
__________________
.: Gildus :.
  #9 (permalink)  
Antiguo 19/06/2011, 09:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Mysql Insert

Hola gente...hice lo que me sugirio skiper...y el error que obtengo es el siguiente

Error en el query; Column count doesn't match value count at row 1

a que corresponde?

Gracias por responderme.
  #10 (permalink)  
Antiguo 19/06/2011, 09:48
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Mysql Insert

Hay un campo que no existe o en los values hay un valor por demas. Que tipo de campo es variable5 en tu tabla?.

Saludos
Gildus
__________________
.: Gildus :.
  #11 (permalink)  
Antiguo 19/06/2011, 10:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Mysql Insert

Hola Gildus...en mi tabla variable5 está definida como varchar(100)....y el valor contiene letras y numeros.

Gracias
  #12 (permalink)  
Antiguo 19/06/2011, 10:52
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Mysql Insert

Haber, a veces hay casos en el que dentro de un insert usamo por ejemplo:

'cualquier palabra'

No hay problema pero cuando hay un apostrofe dentro de ella si hay problema por ejemplo:

'cualquier's, palabra'

Prueba por seacaso con esto en tu SQL:

Código PHP:
Ver original
  1. $con = mysql_connect("localhost","root","clave") or die ("Error en el servidor: ".mysql_error());
  2. mysql_select_db('base datos',$con) or die ("Error en la DB: ".mysql_error());
  3. $sql=mysql_query('INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ("$valor1","$valor2","$valor3","$valor4","$valor5")') or die ("Error en el query; ".mysql_error());

Saludos
Gildus
__________________
.: Gildus :.
  #13 (permalink)  
Antiguo 19/06/2011, 11:17
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Mysql Insert

Hola,

¿Cual puede ser el problema para que no puedas saber con exactitud que es lo que está pasando?

$strSQL = "INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ('{$valor1}','{$valor2}','{$valor3}','{$valor4}',' {$valor5}')";
echo $strSQL;
mysql_query(strSQL,$con);

Muestra lo que te aparece con el 'echo' y después de haber depurado tu consulta y ver que es lo que estás mandando a la base de datos, procede a eliminarlo del código.


Como menciona gildus tu consulta es propensa a inyección SQL.
La forma de realizar una consulta a SQL podría ser la siguiente:

Código PHP:
strSQL sprintf("insert into tabla (v1, v2, v3, v4, v5) values ('%s', '%s', '%s', '%s', '%s')",
    
mysql_real_escape_string($v1),
    
mysql_real_escape_string($v2),
    
mysql_real_escape_string($v3),
    
mysql_real_escape_string($v4),
    
mysql_real_escape_string($v5)
);
echo 
$strSQL;
mysql_query(strSQL$c); 
O en el peor de los casos algo así:
Código PHP:
function mres($i) {
    return 
mysql_real_escape_string($i);
}
strSQL "insert into tabla (v1, v2, v3, v4, v5) values ('" mres($v1) ."', '" .
  
mres($v2) ."', '" mres($v3) ."', '" mres($v4) ."', '" mres($v5) ."')";
echo 
$strSQL;
mysql_query(strSQL$c); 
Y otras muchas formas de evitar estos problemas,
Saludos,
  #14 (permalink)  
Antiguo 19/06/2011, 14:10
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Mysql Insert

Muy bien...pruebo con lo que me dicen y luego les comento...gracias por responderme.
  #15 (permalink)  
Antiguo 20/06/2011, 09:24
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Mysql Insert

Cita:
Iniciado por gildus Ver Mensaje
Hay un campo que no existe o en los values hay un valor por demas. Que tipo de campo es variable5 en tu tabla?.

Saludos
Gildus
Apuesto uno y la mitad del otro a que $variable5 no llega al script.
__________________
La ciencia al poder. Pazciencia ya viene
  #16 (permalink)  
Antiguo 20/06/2011, 13:51
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Mysql Insert

Si yo tambien, por eso le dije que ejecute esto:

Código PHP:
Ver original
  1. die("INSERT INTO nombre_tabla (variable1,variable2,variable3,variable4,variable5 ) VALUES ('$valor1','$valor2','$valor3','$valor4','$valor5')");

Antes de su mysql_query,

Saludos
__________________
.: Gildus :.

Etiquetas: insert, mysql
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 06:08.