Foros del Web » Programando para Internet » PHP »

Insert

Estas en el tema de Insert en el foro de PHP en Foros del Web. hace uns dias postie un mensaje diciendo que no se me insertaba algunos datos en la base de datos, pero todo esta correcto... Esto es ...
  #1 (permalink)  
Antiguo 05/02/2006, 21:10
 
Fecha de Ingreso: junio-2003
Ubicación: Frente al monitor
Mensajes: 508
Antigüedad: 14 años, 6 meses
Puntos: 0
Insert

hace uns dias postie un mensaje diciendo que no se me insertaba algunos datos en la base de datos, pero todo esta correcto...

Esto es mediante un formulario...miren el codigo



<?
$i=0;
$user="user";
$password="pass";
$database="database;
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$nombreentrevista = $_POST['nombreentrevista'];
$fecha = $_POST['fecha'];
$nombre = $_POST['nombre'];
$cumpleanos = $_POST['cumpleanos'];
$zodiaco = $_POST['zodiaco'];
$estatura = $_POST['estatura'];
$peso = $_POST['peso'];
$camisa = $_POST['camisa'];
$cintura = $_POST['cintura'];
$zapatos = $_POST['zapatos'];
$libro = $_POST['libro'];
$momento = $_POST['momento'];
$comida = $_POST['comida'];
$grupo = $_POST['grupo'];
$comentario1 = $_POST['comentario1'];
$comentario2 = $_POST['comentario2'];
$entrevistador = $_POST['entrevistador'];
$pregunta1 = $_POST['pregunta1'];
$respuesta1 = $_POST['respuesta1'];
$pregunta2 = $_POST['pregunta2'];
$respuesta2 = $_POST['respuesta2'];
$pregunta3 = $_POST['pregunta3'];
$respuesta3 = $_POST['respuesta3'];
$pregunta4 = $_POST['pregunta4'];
$respuesta4 = $_POST['respuesta4'];
$pregunta5 = $_POST['pregunta5'];
$respuesta5 = $_POST['respuesta5'];
$pregunta6 = $_POST['pregunta6'];
$respuesta6 = $_POST['respuesta6'];
$pregunta7 = $_POST['pregunta7'];
$respuesta7 = $_POST['respuesta7'];
$pregunta8 = $_POST['pregunta8'];
$respuesta8 = $_POST['respuesta8'];
$pregunta9 = $_POST['pregunta9'];
$respuesta9 = $_POST['respuesta9'];
$pregunta10 = $_POST['pregunta10'];
$respuesta10 = $_POST['respuesta10'];
$pregunta11 = $_POST['pregunta11'];
$respuesta11 = $_POST['respuesta11'];
$pregunta12 = $_POST['pregunta12'];
$respuesta12 = $_POST['respuesta12'];
$pregunta13 = $_POST['pregunta13'];
$respuesta13 = $_POST['respuesta13'];
$mensaje = $_POST['mensaje'];
$foto1 = $_POST['foto1'];
$foto2 = $_POST['foto2'];
$galeria1 = $_POST['galeria1'];
$galeria2 = $_POST['galeria2'];
$galeria3 = $_POST['galeria3'];
$galeria4 = $_POST['galeria4'];

$query = "INSERT INTO entrevistas (nombreentrevista, fecha, nombre, cumpleanos, zodiaco, estatura, peso, camisa, cintura, zapatos, libro, momento, comida, grupo, comentario1, comentario2, entrevistador, pregunta1, respuesta1, pregunta2, respuesta2, pregunta3, respuesta3, pregunta4, respuesta4, pregunta5, respuesta5, pregunta6, respuesta6, pregunta7, respuesta7, pregunta8, respuesta8, pregunta9, respuesta9, pregunta10, respuesta10, pregunta11, respuesta11, pregunta12, respuesta12, pregunta13, respuesta13, mensaje, foto1, foto2, galeria1, galeria2, galeria3, galeria4) VALUES ('$nombreentrevista','$fecha','$nombre','$cumplean os','$zodiaco','$estatura','$peso','$camisa','$cin tura','$zapatos','$libro','$momento','$comida','$g rupo','$comentario1','$comentario2','$entrevistado r','$pregunta1','$respuesta1','$pregunta2','$respu esta2','$pregunta3','$respuesta3','$pregunta4','$r espuesta4','$pregunta5','$respuesta5','$pregunta6' ,'$respuesta6','$pregunta7','$respuesta7','$pregun ta8','$respuesta8','$pregunta9','$respuesta9','$pr egunta10','$respuesta10','$pregunta11','$respuesta 11','$pregunta12','$respuesta12','$pregunta13','$r espuesta13','$mensaje','$foto1','$foto2','$galeria 1','$galeria2','$galeria3','$galeria4')";
mysql_query($query);


mysql_close();
echo "<script>document.location.href='admin.php'</script>";

?>


Pero solo me inserta hasta donde Prgunta 4, pork no me hace la insercion de los demas datos¿
__________________
Tengo una duda...
  #2 (permalink)  
Antiguo 06/02/2006, 01:24
Avatar de levhita  
Fecha de Ingreso: febrero-2006
Ubicación: Guadalajara, México
Mensajes: 88
Antigüedad: 11 años, 10 meses
Puntos: 0
Posiblemente por el contenido, hay una cosa llamada inyección SQL, que hay que tomar mucho en cuenta.

Mira aqui la cadena te parece muy logica:

"..... '$pregunta4' ......"

Pero recuerda que PHP lo preprocesa, y genera una cadena nueva dependiendo del contenido de $pregunta4, si $pregunta4 es igual a "');". entonce tu cadena se reescribiria como.

'');'

Como puedes ver es algo extraño y definivamente no es válido para SQL, para solucionarlo debes de utilizar el siguiente código para "convertir" el contenido de las variables en un formato seguro para sql.

Código PHP:
$campo_limpio addsslashes(stripslashes($campo)); 
El stripslashes es para eliminar las "slashes"(diagonal '\') en caso de que PHP las halla añadido automaticamente(cuando la configuración magic_quotes_gpc esta encendida).

Y el addslashes para añadirlas nuevamente(en caso de que PHP no halla añadido las diagonales automaticamente).

Adicionalmente te conviene añadir código de comprobación que te avise cuando la consulta no fue ejecutada correctamente y te diga porque, en especial si estas en desarollo(en producción conviene registrar los errores en una base de datos.)

Código PHP:
if(!$mysql_query($sql)){
 echo 
mysql_error();
 die();

__________________
"La libertad viene en paquetes pequeños, usualmente TCP/IP"
http://blog.levhita.net/
  #3 (permalink)  
Antiguo 06/02/2006, 08:42
 
Fecha de Ingreso: junio-2003
Ubicación: Frente al monitor
Mensajes: 508
Antigüedad: 14 años, 6 meses
Puntos: 0
no comprendi bien eso k dices...cuak seria la solucion etnonces para eso, donde meto el codigo k dices¿
__________________
Tengo una duda...
  #4 (permalink)  
Antiguo 06/02/2006, 09:30
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 12 años
Puntos: 5
holas bellacord, de lo que te habla levhita es sobre seguridad en tus paginas, te habla de lo que se conoce como SQL injection, lo cual quiere decir que te metan en ves de datos 'correctos o validos' te meten codigo SQL para poder lograr algun objetivo normalmente malicioso, por eso generalmente es recomendable validar los campos que se ingresan y que son usados para consultar a la base de datos, bueno eso podria ser causa de tu problema, pero tambien podria ser un error de logica en tu consulta, por que no muestras tu consulta en tu pagina y ves como te estan enviando los datos:

Código:
echo "<br>consulta: ".$query;
mysql_query($query);
muestra tu consulta y revisa si es que te estan inyectando cdigo SQL en tus campos, o si solo algun error de logica que estas pasando por alto, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #5 (permalink)  
Antiguo 06/02/2006, 11:12
 
Fecha de Ingreso: junio-2003
Ubicación: Frente al monitor
Mensajes: 508
Antigüedad: 14 años, 6 meses
Puntos: 0
pero es k eso no importa de la seguridad pork esos datos solo los introduzco yo desde el panel de control, tendria k hacer otro query para los datos faltantes¿
__________________
Tengo una duda...
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 11:25.