sql >> Base de Datos >  >> RDS >> Mysql

PHP:Insertar valores del formulario en MySQL

El siguiente código simplemente declara una variable de cadena que contiene una consulta de MySQL:

$sql = "INSERT INTO users (username, password, email)
    VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";

No ejecuta la consulta. Para hacer eso, necesita usar algunas funciones, pero déjeme explicarle algo más primero.

NUNCA CONFÍES EN LA ENTRADA DEL USUARIO :nunca debe agregar la entrada del usuario (como la entrada de formulario de $_GET o $_POST ) directamente a su consulta. Alguien puede manipular cuidadosamente la entrada de tal manera que pueda causar un gran daño a su base de datos. Eso se llama Inyección SQL. Puede leer más al respecto aquí

Para proteger su secuencia de comandos de un ataque de este tipo, debe usar declaraciones preparadas. Más información sobre declaraciones preparadas aquí

Incluya declaraciones preparadas en su código como esta:

$sql = "INSERT INTO users (username, password, email)
    VALUES (?,?,?)";

Observe cómo ? se utilizan como marcadores de posición para los valores. A continuación, debe preparar la declaración usando mysqli_prepare :

$stmt = $mysqli->prepare($sql);

Luego comience a vincular las variables de entrada a la declaración preparada:

$stmt->bind_param("sss", $_POST['username'], $_POST['email'], $_POST['password']);

Y finalmente ejecutar las declaraciones preparadas. (Aquí es donde se lleva a cabo la inserción real)

$stmt->execute();

NOTA Aunque no es parte de la pregunta, le recomiendo encarecidamente que nunca almacene las contraseñas en texto claro. En su lugar, debe usar password_hash para almacenar un hash de la contraseña