<?php
require_once 'dbconfig.php';
try{
$dsn = "mysql:host=$host;dbname=$dbname"; // $dbname is empdb as in dbconfig.php
$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,
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 = "Tables are created successfully!<br/>";
}else{
$msg = "Error creating the employees table.<br/>";
}
}else{
$msg = "Error creating the departments table.<br/>";
}
// display the message
if($msg != '')
echo $msg;
}catch (PDOException $e){
echo $e->getMessage();
}
我已经完成了所有的初始化,但我得到的只是
&#34;创建部门表时出错。&#34;
但我看到了一个&#34;部门&#34;表已在数据库中创建(empdb)。 为什么我在创建表时收到错误消息? 。我正在使用WAMP服务器和phpMyadmin来访问数据库。 对此有任何帮助对我来说都是最有价值的。
答案 0 :(得分:2)
将CREATE TABLE [IF NOT EXISTS]
添加到您的表定义中:
CREATE TABLE IF NOT EXISTS departments(
department_no int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
PRIMARY KEY (department_no)
) ENGINE=InnoDB
和
CREATE TABLE IF NOT EXISTS employees
...
答案 1 :(得分:1)
您收到错误是因为您的表已经创建,无法再次创建,所以:
$r = $dbh->exec($sql_create_dept_tbl) // result is false
以下是打印的代码块
}else{
$msg = "Error creating the departments table.<br/>";
}
您可以检查表是否已存在并运行创建或跳过它:
$result = $pdo->query("SELECT 1 FROM $table_name LIMIT 1");
if($result){
//// skip table creation
} else {
//// run table creation script
$r = false;
}
答案 2 :(得分:1)
您不能多次创建具有相同名称的表。检查表是否已存在始终是一个好习惯。使用它可以帮助你,
CREATE TABLE [IF NOT EXISTS] table name