通过PDO创建表时出错

时间:2015-09-25 06:00:49

标签: php sql

<?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来访问数据库。 对此有任何帮助对我来说都是最有价值的。

3 个答案:

答案 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