sql >> Database >  >> RDS >> Mysql

Waarom werkt dit PHP MySQL-registratieformulier niet?

Hieronder vindt u de gewijzigde code met voorbereide verklaring.

De eerste stap is om verbinding te maken met de database. Om dat te doen, moeten we de toegangsgegevens definiëren.

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

Controleer nu de verbinding.

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

Hierna voer je je query uit. Houd er rekening mee dat, aangezien dit uw persoonlijke project is, ik SHA1 . gebruik als het hashen van uw wachtwoord. Voor een groter project raad ik aan om verder te onderzoeken hoe je je wachtwoord kunt beveiligen.

Om de query uit te voeren, moet u deze eerst voorbereiden. Zo doe je dat.

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

Hierin sla je het statement op in $stmt variabel. De zoekopdracht heeft INSERT INTO gevolgd door de naam van de tafel. In jouw geval is dat feedback .

Hierna vult u de velden van de tabel in die moeten worden opgeslagen tussen de eerste haakjes. In uw geval is dit (user, password, email) gevolgd door VALUES .

Hierna voegt u tijdelijke aanduidingen toe voor de werkelijke waarden met behulp van (?, ?, ?) . Houd er rekening mee dat het totale aantal van ? moet overeenkomen met het totale aantal velden in de vorige haak.

Nu moet je de variabelen binden aan deze ? . Dit wordt gedaan door,

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

Houd er rekening mee dat "sss" zijn de formaten van doorgegeven waarden. Hieronder staan ​​de formaten.

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

Je moet dus 3 waarden doorgeven, daarom heb je 3 s , gevolgd door de variabelen waar u de waarden uit het HTML-formulier wilt opslaan door,

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

Nu hoeft u alleen nog maar het voorbereide statement uit te voeren.

$stmt->execute();

Dat is het!

Hieronder staat de volledige code.

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

Ik hoop dat dit helpt.



  1. div bijwerken bij klikken op knop, wanneer de knop wordt gegenereerd door op een andere knop te klikken

  2. Selecteer alleen de laatste waarde met group by op mysql

  3. Verbind Android met de server in gratis webhost

  4. PostgreSQL:een geldig voorbeeld voor variabele toewijzing?