如果它们不存在CMS和PAGES,那么应该在MySQL中创建2个新表的代码,但是正在发生的是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表。
答案 0 :(得分:6)
您在开始第二个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...
答案 1 :(得分:1)
如果您使用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;
答案 2 :(得分:1)
查询本身似乎没问题,因此一种解释可能是页面已经存在,或者用户以某种方式无权创建该特定表。
您可以修改代码,以便显示MySQL服务器在运行查询时所说的内容:
result = mysql_query($make_pages);
if (!$result) {
echo('Invalid query: ' . mysql_error());
}
答案 3 :(得分:0)
将“text TEXT”更改为text1 TEXT,它应该可以正常工作!记住sql不区分大小写。