以下是如果MySQL中不存在CMS和PAGES,则应在其中创建两个新表的代码,但实际情况是CMS正在创建,但PAGES被忽略且未创建。
以下是负责创建表的php函数
private function buildDB() {
#lets create cms table if one does not exist
$make_cms = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS cms (
title VARCHAR(150),
bodytext TEXT,
date VARCHAR(100)
)
MySQL_QUERY;
return mysql_query($make_cms);
#lets create pages table if one does not exist
$make_pages = <<<MySQL_QUERY2
CREATE TABLE IF NOT EXISTS pages (
pid int NOT NULL AUTO_INCREMENT, PRIMARY KEY (pid),
title VARCHAR(150),
text TEXT,
date VARCHAR(100)
)
MySQL_QUERY2;
return mysql_query($make_pages);
}
这就是函数。我会再次注意到它的第一部分是有效的,所以$make_cms完成了它的工作,实际上制作了一个名为cms的表,而函数$make_pages什么都不做,无法创建pages表。
您在开始第二个CREATE TABLE
语句之前从函数返回。因此,永远不会到达第二个语句。
// Don't return here!
return mysql_query($make_cms);
相反,仅当FALSE
:时分配值并返回
$success_cms = mysql_query($make_cms);
// Return only on error of first table creation
if (!$success) {
return FALSE;
}
// Then create the second table...
如果使用echo mysql_error()
输出错误,它会告诉您。我想这是因为您有一个名为text
的字段,这是一个保留字。请尝试用tics(`)转义字段名或避免使用保留字。
#lets create pages table if one does not exist
$make_pages = <<<MySQL_QUERY2
CREATE TABLE IF NOT EXISTS pages (
`pid` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`pid`),
`title` VARCHAR(150),
`text` TEXT,
`date` VARCHAR(100)
)
MySQL_QUERY2;
查询本身似乎还可以,因此一种解释可能是页面已经存在,或者用户不知何故没有创建该特定表的权限。
您可以修改代码,使其显示MySQL服务器在运行查询时所说的内容:
result = mysql_query($make_pages);
if (!$result) {
echo('Invalid query: ' . mysql_error());
}
将"text text"更改为text1 text,应该可以了!请记住,sql不区分大小写。