我正在使用模型视图控制方法来创建应用程序。
我正在尝试在加载页面时动态创建表。这是代码。
在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
时,不会创建表格。我哪里做错了?
答案 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))
修改强>
要在评论中回答您的问题,如果您没有使用auto_increment列,则不需要声明主键。
答案 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
。