Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] insertar datos a la bd

Estas en el tema de insertar datos a la bd en el foro de PHP en Foros del Web. Hola buen día. Tengo un problema que espero puedan ayudarme a resolverlo je Tengo una función para que se escapen los valores y evitar amenazas ...
  #1 (permalink)  
Antiguo 15/03/2017, 13:41
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 10 años, 5 meses
Puntos: 0
insertar datos a la bd

Hola buen día.
Tengo un problema que espero puedan ayudarme a resolverlo je
Tengo una función para que se escapen los valores y evitar amenazas en mi web:
Código PHP:
Ver original
  1. function Security($x) {
  2.         $x = trim($x);
  3.         $x = stripslashes($x);
  4.         $x = htmlspecialchars($x);
  5.         return $x;
  6.     }
El problema es que al insertarlo a la bd no se inserta nada:

Código PHP:
Ver original
  1. $MySQLi->query("INSERT INTO comments (Comment) VALUES ('".Security($_POST['comment'])."'");

¿Saben que es lo que esta ocasionando este error?
Gracias de antemano
  #2 (permalink)  
Antiguo 15/03/2017, 13:47
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: insertar datos a la bd

¿que error te produce?, intenta ejecutar el sql directo en la DB
  #3 (permalink)  
Antiguo 15/03/2017, 13:49
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: insertar datos a la bd

VALUES ('".Security($_POST['comment'])."')");

Pues te falta un parentesis que cierra el parametro de variables pero... no se si esta del todo bien que ejecutes esa funcion en el query directamente, para mi mejor almacenarla en variable y mandar esta al query

Código PHP:
Ver original
  1. $procesa = Security($_POST['comment']);
  2. $MySQLi->query("INSERT INTO comments (Comment) VALUES ('".$procesa."')");
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #4 (permalink)  
Antiguo 15/03/2017, 13:58
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: insertar datos a la bd

Cita:
Iniciado por petit89 Ver Mensaje
VALUES ('".Security($_POST['comment'])."')");

Pues te falta un parentesis que cierra el parametro de variables pero... no se si esta del todo bien que ejecutes esa funcion en el query directamente, para mi mejor almacenarla en variable y mandar esta al query

Código PHP:
Ver original
  1. $procesa = Security($_POST['comment']);
  2. $MySQLi->query("INSERT INTO comments (Comment) VALUES ('".$procesa."')");
Oh si, Lo coloque mal pero sigue sin insertar nada
Código PHP:
Ver original
  1. $procesa = Security($_POST['comment']);
  2. $MySQLi->query("INSERT INTO comments (Comment) VALUES ('".$procesa."')");
Acabo de realizar un echo para ver si me mostraba algo y en efecto, se muestra $procesa bien pero no lo inserta en la bd
  #5 (permalink)  
Antiguo 15/03/2017, 13:59
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: insertar datos a la bd

Cita:
Iniciado por sustentio Ver Mensaje
¿que error te produce?, intenta ejecutar el sql directo en la DB
No inserta el POST en la bd, si se inserta bien el sql directo pero siento que es cosa de la función o algo porque no lo inserta desde la web
  #6 (permalink)  
Antiguo 15/03/2017, 14:13
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: insertar datos a la bd

Y si pones:

Código PHP:
Ver original
  1. $MySQLi->query("INSERT INTO comments (Comment) VALUES ('esto es una prueba')");

te guarda? si no te guarda tendras que revisar conexion, nombres de campos correctamente escritos...
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #7 (permalink)  
Antiguo 15/03/2017, 14:37
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: insertar datos a la bd

Cita:
Iniciado por petit89 Ver Mensaje
Y si pones:

Código PHP:
Ver original
  1. $MySQLi->query("INSERT INTO comments (Comment) VALUES ('esto es una prueba')");

te guarda? si no te guarda tendras que revisar conexion, nombres de campos correctamente escritos...
Si, eso si lo guarda Pero no entiendo porque al pasarlo por la función es que no lo guarda, incluso al colocarle un echo si mostro correctamente el POST pero no lo guardo
  #8 (permalink)  
Antiguo 15/03/2017, 14:44
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: insertar datos a la bd

Creo que si era error de la función le he agregado un str_replace para que me transforme las comillas simples en comillas normales, como dije es para evitar los ataques a la web, lo dejo por si a alguien le es de utilidad:
Código PHP:
Ver original
  1. public static function Security($x) {
  2.         $x = trim($x);
  3.         $x = stripslashes($x);
  4.         $x = htmlspecialchars($x);
  5.         $x = str_replace("'", '"', $x);
  6.         return $x;
  7.     }
Y gracias por su tiempo y apoyo, un saludo
  #9 (permalink)  
Antiguo 15/03/2017, 19:56
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: insertar datos a la bd

No entiendo la necesidad de crear esa función que realmente no te va a proteger de una injeccion cuando php ya proporciona métodos para tal fin: real_escape_string
__________________
Unset($vida['malRollo']);

Etiquetas: bd, html, 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 21:57.