无法在MySQL中动态创建表

时间:2014-10-13 17:28:33

标签: php mysql

我正在使用模型视图控制方法来创建应用程序。

我正在尝试在加载页面时动态创建表。这是代码。

dashboard.php

<?php
  require_once ("controller/db-config.php"); 
  require_once  ("controller/connectDB.php");
?>

db-config.php

<?php
    define('DB_NAME', 'learningcamp');
    define('DB_USER', 'root');
    define('DB_PASSWORD', ''); //Put your MySQL password here
    define('DB_HOST', 'localhost');
?>

connectDB.php

<?php
    require_once ("controller/db-config.php");     
    require_once ("model/database.php");


    // Create database connection
    $databaseConnection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($databaseConnection->connect_errno)
    {
        die("Database selection failed: " . $databaseConnection->connect_error);
    }

    // Create tables if needed.
    prep_DB_content();
?>

database.php

<?php
    require_once ("controller/db-config.php"); 

    function prep_DB_content (){
        global $databaseConnection;
        create_tables($databaseConnection);
    }

    function create_tables($databaseConnection){    
        $query_fo_pages = "CREATE TABLE IF NOT EXISTS frontoffice (sl INT NOT NULL AUTO_INCREMENT, field VARCHAR(32) NOT NULL, description VARCHAR(800), flag INT NOT NULL)";
        $databaseConnection->query($query_fo_pages);

    }
?>

但不知何故,当我刷新页面dashboard.php时,不会创建表格。我哪里做错了?

2 个答案:

答案 0 :(得分:3)

问题是你定义了一个AUTO_INCREMENT列,但没有定义主键。

如果将任何列定义为自动增量,则还必须将它们设为键。试试这个:

CREATE TABLE IF NOT EXISTS frontoffice(
    sl INT NOT NULL AUTO_INCREMENT, 
    field VARCHAR(32) NOT NULL, 
    description VARCHAR(800), 
    flag INT NOT NULL,
    PRIMARY KEY(sl))

SQL Fiddle.

修改

要在评论中回答您的问题,如果您没有使用auto_increment列,则不需要声明主键。

Fiddle without auto increment and key.

答案 1 :(得分:3)

您的SQL创建中有错误:

    $query_fo_pages = "CREATE TABLE IF NOT EXISTS frontoffice (sl INT NOT NULL AUTO_INCREMENT PRIMARY KEY, field VARCHAR(32) NOT NULL, description VARCHAR(800), flag INT NOT NULL)";

PRIMARY KEY列上添加auto_increment