PHP PDO注册不起作用?

PHP PDO注册不起作用?,php,sql,pdo,Php,Sql,Pdo,我知道这是一个非常“典型”的问题,应该很容易做到,但我不明白为什么它不起作用,一旦在表单中添加输入并点击“enter”,它就会重定向到register.php并从我的连接脚本中回显“connected successfully”。我的数据库里根本没有任何东西,任何我出错的指针都会很好 HTML <form method "POST" id="regform" action="register.php"> <input type="text" username="

我知道这是一个非常“典型”的问题,应该很容易做到,但我不明白为什么它不起作用,一旦在表单中添加输入并点击“enter”,它就会重定向到register.php并从我的连接脚本中回显“connected successfully”。我的数据库里根本没有任何东西,任何我出错的指针都会很好

HTML

    <form method "POST" id="regform" action="register.php">
    <input type="text" username="username" placeholder="Please enter your 
    email"/>
    <input type="text" password="password" placeholder="Please create a 
    password"/>
    <input type="submit" value="enter"/>
    </form>

Connect.php

<?php

$servername = "localhost";
$dbusername = "root";
$dbpassword = "root";
$dbname = "fyp";


try{
$pdostmt = new PDO("mysql:host=$servername;dbname=$dbname",$dbusername, 
$dbpassword);
 $pdostmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "connected succesfully";
}
catch(PDOException $e)
{
print "Error! Unable to connect: " . $e->getMessage() . "<br/>";
die();
}
?>
<?php
// Starting the session and connecting to the DB
session_start();
require_once'connect.php';

if(isset($_POST['register'])){


$username = !empty($_POST['username']) ? trim($_POST['username']) : null;
$pass = !empty($_POST['password']) ? trim($_POST['password']) : null;

$sql = "SELECT COUNT(username) AS num FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':username', $username);


$stmt->execute();


$row = $stmt->fetch(PDO::FETCH_ASSOC);


if($row['num'] > 0){
    die('That username already exists!');
}

$sql = "INSERT INTO users (username, password) VALUES (:username, 
:password)";
$stmt = $pdo->prepare($sql);

$stmt->bindValue(':username', $username);
$stmt->bindValue(':password', $passwordHash);

$result = $stmt->execute();

if($result){
    echo 'Thank you for registering with our website.';
            header("Location: index.php");
 }
    else {
        echo '<b> There has been an error please contact support </b>';
    }

}

?>

register.php

<?php

$servername = "localhost";
$dbusername = "root";
$dbpassword = "root";
$dbname = "fyp";


try{
$pdostmt = new PDO("mysql:host=$servername;dbname=$dbname",$dbusername, 
$dbpassword);
 $pdostmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "connected succesfully";
}
catch(PDOException $e)
{
print "Error! Unable to connect: " . $e->getMessage() . "<br/>";
die();
}
?>
<?php
// Starting the session and connecting to the DB
session_start();
require_once'connect.php';

if(isset($_POST['register'])){


$username = !empty($_POST['username']) ? trim($_POST['username']) : null;
$pass = !empty($_POST['password']) ? trim($_POST['password']) : null;

$sql = "SELECT COUNT(username) AS num FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':username', $username);


$stmt->execute();


$row = $stmt->fetch(PDO::FETCH_ASSOC);


if($row['num'] > 0){
    die('That username already exists!');
}

$sql = "INSERT INTO users (username, password) VALUES (:username, 
:password)";
$stmt = $pdo->prepare($sql);

$stmt->bindValue(':username', $username);
$stmt->bindValue(':password', $passwordHash);

$result = $stmt->execute();

if($result){
    echo 'Thank you for registering with our website.';
            header("Location: index.php");
 }
    else {
        echo '<b> There has been an error please contact support </b>';
    }

}

?>

我为此绞尽脑汁已有一段时间了,如果我愚蠢的话,任何帮助都将不胜感激。将HTML中的
username=“username”
更改为
name=“username”
password=“password”
更改为
name=“password”

您还需要检查是否设置了
\u POST['enter']
,而不是
$\u POST['register']
(感谢您的提醒)


正如Danielius指出的,在register.php中将
$pdo
更改为
$pdosmt

在查询中,您应该使用
$pdosmt
而不是
$pdo
,因为它是您的pdo对象,
$pdo
是空的。您还没有为任何输入指定名称。确实需要进行更改,但这并不能克服这样一个事实,即正在检查的是
$\u POST['register']
,如果
$pdo
未切换为
$pdosmt
,则代码将不起作用(反之亦然)?这是因为
$pdosmt
是PDO对象,但在准备好的语句中使用了
$PDO