PDO创建新表


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

员工数据模型介绍

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

在Employees数据库中有两个表:

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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的新数据库来存储员工数据,如下所示:

1
CREATE DATABASE empdb;

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

1
2
3
4
5
<?php
$host='localhost';
$db = 'empdb';
$username = 'root';
$password = '';

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

</td>

<?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表。


原文链接:https://codingdict.com/