PDO创建新表

时间:2018-11-15 15:21:52  来源:igfitidea点击:

在本教程中,我们将学习如何使用PDO API创建新表。

员工数据模型介绍

在PDO系列教程中,我们将使用到employees数据库。以下数据库关系图说明了employees数据模型:

在Employees数据库中有两个表:

  • 部门表departments:存储部门数据,包括部门编号和部门名称。每个部门都有一名或多名员工。
  • 员工表employees:存储员工数据,包括员工编号、姓名、姓氏、出生日期、性别、雇用日期和员工所属部门。

请注意,为了用于演示目的,我们将使employees数据模型尽可能简单。我们将使用的数据库是MySQL。

要在数据库中创建新表,请使用CREATE TABLE语句。以下SQL语句用于创建部门表:

CREATE TABLE departments (
  department_no int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  PRIMARY KEY (department_no)
) ENGINE=InnoDB;

要创建employees表,可以使用以下SQL语句:

CREATE TABLE employees (
  employee_no int(11) NOT NULL AUTO_INCREMENT,
  first_name varchar(40) NOT NULL,
  last_name varchar(40) NOT NULL,
  birth_date date NOT NULL,
  gender varchar(1) NOT NULL,
  hire_date date DEFAULT NULL,
  department_no int(11) DEFAULT NULL,
  PRIMARY KEY (employee_no),
  KEY emp_dept (department_no),
  CONSTRAINT emp_dept FOREIGN KEY (department_no) 
  REFERENCES departments (department_no)
) ENGINE=InnoDB;

我们可以通过MySQL命令行工具或类似MySQL Workbench的GUI工具执行这些SQL语句来创建departments和employees表。

但是,这里我们将从PHP脚本使用PDO API创建这些表。

使用PDO创建新表

首先,我们需要在MySQL中创建一个名为empdb的新数据库来存储员工数据,如下所示:

CREATE DATABASE empdb;

然后,我们需要创建一个新的数据库配置文件dbconfig.php来存储数据库参数,包括主机、数据库名称、用户名和密码,如下所示:

<?php
$host='localhost';
$db = 'empdb';
$username = 'root';
$password = '';

最后,我们开发一个脚本文件,在empdb数据库中创建新表。我们将在这个脚本文件中include包含 dbconfig.php来访问数据库配置。

<?php

require_once 'dbconfig.php';

try {
    $dsn = "mysql:host=$host;dbname=$db";
    $dbh = new PDO($dsn, $username, $password);

    $sql_create_dept_tbl = <<<EOSQL
CREATE TABLE departments(
  department_no int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  PRIMARY KEY (department_no)
) ENGINE=InnoDB
EOSQL;

    $sql_create_emp_tbl = <<<EOSQL
CREATE TABLE employees (
  employee_no int(11) NOT NULL AUTO_INCREMENT,
  first_name varchar(40) NOT NULL,
  last_name varchar(40) NOT NULL,
  birth_date date NOT NULL,
  gender varchar(1) NOT NULL,
  hire_date date DEFAULT NULL,
  department_no int(11) DEFAULT NULL,
  PRIMARY KEY (employee_no),
  KEY emp_dept (department_no),
  CONSTRAINT emp_dept FOREIGN KEY (department_no)
  REFERENCES departments (department_no)
) ENGINE=InnoDB
EOSQL;

    $msg = '';

    $r = $dbh->exec($sql_create_dept_tbl);

    if ($r !== false) {

        $r = $dbh->exec($sql_create_emp_tbl);

        if ($r !== false) {
            $msg = "成功创建表!<br/>";
        } else {
            $msg = "创建employees表时出错.<br/>";
        }
    } else {
        $msg = "创建departments表时出错.<br/>";
    }

    // 显示信息
    if ($msg != '')
        echo $msg;
} catch (PDOException $e) {
    echo $e->getMessage();
}

执行脚本文件后,可以检查数据库,查看是否已创建了departments和employees表。