php - 在XAMPP中创建数据库(MySQL PDO)并使用php代码连接它

标签 php mysql database pdo xampp

我已经使用 Sublime3 编写了登录和注册表单的代码。我需要使用 Mysql PDO 在 XAMPP 中创建一个数据库并将其链接到代码,以便通过数据库进行登录验证。 下面是我为数据库编写的代码。但当我使用新用户名注册时,它不会自动创建表。注册期间输入的数据不会存储在数据库中。 用phpmyadmin编写的代码

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `first_name` varchar(255) NOT NULL,
  `middle_name`varchar(255),
  `last_name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

数据库连接代码

<?php
    $dsn = 'mysql:host=localhost;dbname=ecs;';
    $user = 'root';
    $password = '';
    try
    {
        $dbh = new PDO($dsn, $user, $password);
    }
    catch (PDOException $e)
    {
        echo 'Connection failed: ' . $e->getMessage();
    }
?>

注册码

<?php
    session_start();
    require_once("../includes/dbconfig.php");

    try{
        $uname = $_POST["username"];
        $pword = $_POST["password"];
        $first_name = $_POST["firstname"];
        $middle_name = $_POST["middlename"];
        $last_name = $_POST["lastname"];
        $user_type = $_POST["user_type"];

        $dbh = new PDO($dsn, $user, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $sql = "INSERT INTO users (username, password, first_name, middle_name, last_name, user_type) 
                VALUES (:username, :password, :first_name, :middle_name, :last_name, :user_type)";
        $stmt = $dbh->prepare($sql);
        $stmt->bindValue(':username', $uname);
        $stmt->bindValue(':password', $pword);
        $stmt->bindValue(':first_name', $first_name);
        $stmt->bindValue(':middle_name', $middle_name);
        $stmt->bindValue(':last_name', $last_name);
        $stmt->bindValue(':user_type', $user_type);
        $stmt->execute();

    } 
    catch (PDOException $e)
    {
        echo 'PDO Exception Caught.';
        echo 'Error with the database: <br />';
        echo 'SQL Query: ', $sql;
        echo 'Error: ' . $e->getMessage();
    }
?>

你能告诉我我做错了什么吗?是 XAMPP 中的代码还是某些安装更改?

最佳答案

我在表中没有看到 user_type 列,因此我认为这就是导致问题的原因。您可以创建该列并重试或将其从 PHP 代码中删除吗?另外,请按照@Jay Blanchard 之前提到的方式加密您的用户密码。

关于php - 在XAMPP中创建数据库(MySQL PDO)并使用php代码连接它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36992221/

相关文章:

php - 使用 javaScript 从 PHP 读取 Json

mysql - 使用 Datadog 监控 Aurora 未显示查询量的变化

sql - 在 Sybase ASE 中插入多行

javascript - 提交表单 onchange 复选框并更新 mysql 数据库

php - 嵌套集模型是否适用于具有多个类别(多对多)的文章?

php - 在网页上显示 PHP 代码

php - 无休止的滚动并使用GET方法来过滤内容

php - 如何获得客户提交帖子的天数?

php - 将图像链接更新为自己的 URL

mysql - MySQL 中的特定重复选择