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