Php 用于注册新帐户的HTML-SQL查询

Php 用于注册新帐户的HTML-SQL查询,php,html,registration,Php,Html,Registration,我正在编写一个查询,以便将输入表单的内容输入数据库。这是到目前为止我的代码,我认为这是实际查询的一个问题,因为我不完全确定如何将变量输入到SQL查询中,如果有人能帮助我的话,这听起来不错:) 注册提交PHP <font face="ClearSans-Thin"> <font color="lightgray"> <?php include 'registrationform.php'; include 'connection.php'; if (is

我正在编写一个查询,以便将输入表单的内容输入数据库。这是到目前为止我的代码,我认为这是实际查询的一个问题,因为我不完全确定如何将变量输入到SQL查询中,如果有人能帮助我的话,这听起来不错:)

注册提交PHP

    <font face="ClearSans-Thin">
<font color="lightgray">

<?php

include 'registrationform.php';
include 'connection.php';

if (isset($_POST['regsubmit'])) {
    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $email = $_POST['email'];
    $dob = $_POST['dob'];
    $user = $_POST['registerusername'];

    $pass = $_POST['registerpassword'];
    $query = "INSERT INTO Users (FirstName, LastName, Email, DateofBirth, Username, Password) VALUES ('$firstname', '$lastname', '$email', '$dob', '$user', '$pass')";



}

那么基本上我该如何用变量替换信息呢?

您需要使用参数化查询将参数传递到SQL语句中。另一种方法是,通过创建带有参数的字符串来构建SQL语句,这会使您容易受到SQL注入攻击

比如:

$query = "INSERT INTO Users (FirstName, LastName, Email, DateofBirth, Username, Password) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param("ssssss", $firstname, $lastname, $email, $dob, $user, $pass);
$stmt->execute();
$stmt->close();

您需要创建参数化查询并绑定参数。既然您选择了程序样式,那么您需要遵循以下几点:

$stmt = mysqli_prepare($connection, "INSERT INTO Users (FirstName, LastName, Email, DateofBirth, Username, Password) VALUES (?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "ssssss", $firstname, $lastname, $email, $dob, $user, $pass);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
有关更多信息,请参阅:


在将数据插入数据库之前,请确保验证数据。我不能强调这有多重要永远不要将受污染的输入数据直接接受到应用程序中。

创建一个准备好的语句以避免

永远不要尝试插入纯用户数据
要对其进行清理,请使用
$email=filter\u var($\u POST['email'],filter\u SANITIZE\u email)
PHP中有一些
FILTER\u SANITIZE
常量,所以请使用它们:)

请在以下位置找到它们:

如果您使用的是整数字段,则不能像那样存储它
12-34-5678
对于此变量,您需要一个varchar或text字段

在connection.php中使用什么?mysql,mysqli,pdo?$connection=mysqli_connect('localhost','root','c3438525')或退出;这是对他的问题的回答吗?你怎么知道他是怎么储存数据的?如上所述,它在phpmyadmin manwtf旁边工作?!?不,这是对圣诞老人条款的回答。。难道他不可能使用整型字段来存储非整数值吗?当然有些初学者会这么做(包括几年前的我)他的问题表明他是一个真正的初学者,那么为什么你认为这不可能是一个问题呢?这可能是一个非常大的问题。试试看,你会认出…嘿,冷静点。他只是尝试将数据插入数据库,结果成功了。阅读
UPDATE
部分:)他只是不知道如何正确地将它插入PHP为什么你的1条评论不是这样写的?好问题,但对StackOverflow来说太好了:P它包含0个攻击,但是,是的,第二点是你是一个传奇。非常感谢,伙计。我不介意,但不客气。祝您有一个愉快的编程之夜(欧洲相当黑暗):)
$query = "INSERT INTO Users (FirstName, LastName, Email, DateofBirth, Username, Password) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param("ssssss", $firstname, $lastname, $email, $dob, $user, $pass);
$stmt->execute();
$stmt->close();
$stmt = mysqli_prepare($connection, "INSERT INTO Users (FirstName, LastName, Email, DateofBirth, Username, Password) VALUES (?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "ssssss", $firstname, $lastname, $email, $dob, $user, $pass);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
if ($stmt = mysqli_prepare($connection, $query = "INSERT INTO Users (FirstName, LastName, Email, DateofBirth, Username, Password) VALUES (?,?,?,?,?,?)")) {

    mysqli_stmt_bind_param($stmt, 'ssssss', $firstname,$lastname,$email,$dob,$user,$pass);

    mysqli_stmt_execute($stmt) or die('Error when inserting:'.mysqli_error($connection));
 }else{
die('Error when preparing '.mysqli_error($connection));
}