php无法通过查询创建新的数据库表

时间:2012-02-14 21:30:31

标签: php mysql

如果它们不存在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表。

4 个答案:

答案 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不区分大小写。