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

Por que este formulário de registro PHP MySQL não funciona?


Abaixo está o código modificado com a Declaração Preparada.

O primeiro passo é se conectar ao banco de dados. Para fazer isso, precisamos definir os detalhes de acesso.
// Define Database Credentials
$servername = "localhost"; //Server Name
$username = "KyleHulse"; //Username to the DB
$password = "(my password)"; //Password to the DB
$dbname = "csdb1082"; //Name of the Database

// Create Database Connection
$conn = new mysqli($servername, $username, $password, $dbname);

Agora verifique a conexão.
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

Depois disso, você executa sua consulta. Observe que, como este é seu projeto pessoal, estou usando SHA1 como o hash de sua senha. Para um projeto maior, recomendo pesquisar mais sobre como proteger sua senha.

Para executar a consulta, primeiro é prepará-la. Isto é como você faz.
$stmt = $conn->prepare("INSERT INTO feedback (user, password, email) VALUES (?, ?, ?)");

Neste, você armazena a instrução em $stmt variável. A consulta tem INSERT INTO seguido do nome da tabela. No seu caso é feedback .

Depois disso, você preenche os campos da tabela para serem salvos no primeiro colchete. No seu caso será (user, password, email) seguido por VALUES .

Depois disso, você adiciona espaços reservados para os valores reais usando (?, ?, ?) . Observe que a contagem total de ? deve corresponder à contagem total de campos no colchete anterior.

Agora você tem que vincular as variáveis ​​a estes ? . Isso é feito por,
$stmt->bind_param("sss", $user, $password, $email);

Observe que "sss" são os formatos de valores passados. Abaixo estão os formatos.
i - integer
d - double
s - string
b - BLOB

Então você precisa passar 3 valores, portanto você tem 3 s , seguido pelas variáveis ​​onde você armazenará os valores do formulário HTML por,
$user = $_POST["user"];
$password = sha1($_POST["password"]); //simplest way to use SHA1 hash.
$email = $_POST["email"];

Agora você só precisa executar a instrução preparada.
$stmt->execute();

É isso!

Abaixo está o código completo.
// Define Database Credentials
$servername = "localhost"; //Server Name
$username = "KyleHulse"; //Username to the DB
$password = "(my password)"; //Password to the DB
$dbname = "csdb1082"; //Name of the Database

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO feedback (user, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $user, $password, $email);

$user = $_POST["user"];
$password = sha1($_POST["password"]); //simplest way to use SHA1 hash.
$email = $_POST["email"];

$stmt->execute();

Espero que isto ajude.