Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP:Inserindo valores do formulário no MySQL


O código a seguir apenas declara uma variável string que contém uma consulta MySQL:
$sql = "INSERT INTO users (username, password, email)
    VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";

Ele não executa a consulta. Para fazer isso, você precisa usar algumas funções, mas deixe-me explicar outra coisa primeiro.

NUNCA CONFIE NA ENTRADA DO USUÁRIO :Você nunca deve anexar entrada do usuário (como entrada de formulário de $_GET ou $_POST ) diretamente à sua consulta. Alguém pode manipular cuidadosamente a entrada de forma que possa causar grandes danos ao seu banco de dados. Isso é chamado de injeção de SQL. Você pode ler mais sobre isso aqui

Para proteger seu script de tal ataque, você deve usar Declarações Preparadas. Mais sobre declarações preparadas aqui

Inclua instruções preparadas em seu código como esta:
$sql = "INSERT INTO users (username, password, email)
    VALUES (?,?,?)";

Observe como o ? são usados ​​como espaços reservados para os valores. Em seguida, você deve preparar a instrução usando mysqli_prepare :
$stmt = $mysqli->prepare($sql);

Em seguida, comece a vincular as variáveis ​​de entrada à instrução preparada:
$stmt->bind_param("sss", $_POST['username'], $_POST['email'], $_POST['password']);

E finalmente execute as instruções preparadas. (É aqui que a inserção real ocorre)
$stmt->execute();

OBSERVAÇÃO Embora não seja parte da questão, aconselho fortemente que você nunca armazene senhas em texto não criptografado. Em vez disso, você deve usar password_hash para armazenar um hash da senha