代码之家  ›  专栏  ›  技术社区  ›  Isaac

php pdo注册不工作?

  •  1
  • Isaac  · 技术社区  · 8 年前

    我知道这是一个非常“典型”的问题,它应该很容易做到,但我不能包庇我的头为什么它不工作?,一旦输入被添加到表单并点击“enter”,它就会简单地重定向到register.php,并从我的connect脚本返回“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>
    

    连接.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>';
        }
    
    }
    
    ?>
    

    我已经为此绞尽脑汁了一段时间,任何帮助都是值得的,如果我是愚蠢的斥责我。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Dave    8 年前

    改变 username="username" 到 name="username" 和 password="password" 到 name="password" 在你的html中。

    你还需要检查一下 _POST['enter'] 已设置而不是 $_POST['register'] (谢谢提醒帕特里克Q)。

    正如达涅利所指出的,改变 $pdo 到 $pdostmt 在register.php中。