php无法通过查询创建新的数据库表
问题描述:
下面是在MySQL中如果不存在CMS和PAGES,应该创建2个新表的代码,但是发生的事情是CMS正在创建,但PAGES被忽略,并且未创建。php无法通过查询创建新的数据库表
这里是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;
答
变化“的文本的文本,”到文本1文本,它应该工作!记住sql不区分大小写。
答
查询本身似乎没问题,所以有一种解释可能是已经存在页面,或者用户无法创建特定表格。
您可以修改代码,以便它显示了运行查询时什么MySQL服务器说:
result = mysql_query($make_pages);
if (!$result) {
echo('Invalid query: ' . mysql_error());
}
所以你说我应该回到他们的人个个被执行。秒我会试试看看它是如何:) – 2012-02-14 21:37:20
好赶上...是的,我错过了... – Umbrella 2012-02-14 21:37:39
@Cl'看到我刚刚添加的代码。 'return'离开了一个函数。只有当你不希望做其他事情时才能调用它。 – 2012-02-14 21:38:13