2012-02-14 84 views
1

下面是在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表。

回答

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... 
+0

所以你說我應該回到他們的人個個被執行。秒我會試試看看它是如何:) – 2012-02-14 21:37:20

+0

好趕上...是的,我錯過了... – Umbrella 2012-02-14 21:37:39

+0

@Cl'看到我剛剛添加的代碼。 'return'離開了一個函數。只有當你不希望做其他事情時才能調用它。 – 2012-02-14 21:38:13

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; 
0

變化「的文本的文本,」到文本1文本,它應該工作!記住sql不區分大小寫。

1

查詢本身似乎沒問題,所以有一種解釋可能是已經存在頁面,或者用戶無法創建特定表格。

您可以修改代碼,以便它顯示了運行查詢時什麼MySQL服務器說:

result = mysql_query($make_pages); 

if (!$result) { 
    echo('Invalid query: ' . mysql_error()); 
}