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

¿Por qué no funciona este formulario de registro PHP MySQL?

A continuación se muestra el código modificado con declaración preparada.

El primer paso es conectarse a la base de datos. Para hacer eso, necesitamos definir los detalles de acceso.

// 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);

Ahora comprueba la conexión.

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

Después de esto, ejecuta su consulta. Tenga en cuenta que, dado que este es su proyecto personal, estoy usando SHA1 como el hash de su contraseña. Para un proyecto más grande, recomiendo investigar más sobre cómo proteger su contraseña.

Para ejecutar la consulta, primero hay que prepararla. Así es como lo haces.

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

En esto, almacena la declaración en $stmt variable. La consulta tiene INSERT INTO seguido del nombre de la tabla. En tu caso es feedback .

Después de esto, complete los campos de la tabla que se guardarán en el primer paréntesis. En tu caso será (user, password, email) seguido de VALUES .

Después de esto, agrega marcadores de posición para los valores reales usando (?, ?, ?) . Tenga en cuenta que el recuento total de ? debe coincidir con el número total de campos del paréntesis anterior.

Ahora tienes que vincular las variables a estos ? . Esto lo hace,

$stmt->bind_param("sss", $user, $password, $email);

Tenga en cuenta que "sss" son los formatos de los valores pasados. A continuación se muestran los formatos.

i - integer
d - double
s - string
b - BLOB

Por lo tanto, debe pasar 3 valores, por lo tanto, tiene 3 s , seguido de las variables donde almacenará los valores del formulario HTML,

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

Ahora solo necesita ejecutar la instrucción preparada.

$stmt->execute();

¡Eso es!

A continuación se muestra el 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 esto ayude.