2014-05-07 96 views
0

我正在做一個PHP腳本,我正在做一個安裝頁面。在運行安裝腳本之前,用戶必須編輯配置文件並輸入他們的數據庫憑據(他們必須先創建數據庫)。SQL查詢似乎沒有工作

安裝腳本首先檢查它們是否滿足要求。如果他們然後顯示「導入表」按鈕。這是我遇到問題的地方。這裏是我的代碼:

<?php 

if (isset($_POST['step2'])) { 
    if (isset($success_php, $success_mysqli, $step_1_complete)) { 
     // Import SQL tables 

     $sql = (" 
      CREATE TABLE `banned_ips` (
      `id` int(11) NOT NULL AUTO_INCREMENT, 
      `ip` varchar(15) NOT NULL, 
      `reason` text NOT NULL, 
      PRIMARY KEY (`id`), 
      UNIQUE KEY `ip` (`ip`) 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; 
      "); 

     if ($db->execute($sql)) { 
      $success_import = true; 
      $step_2_complete = true; 
     } 

     $db->close(); 
    } 
} 

} 

?> 

我被它直接從.sql文件想着加載但是我試圖讓腳本兼容,因爲我可以在不同的服務器上,所以因此,我選擇了做像查詢所以。

我在問的是我的上述查詢是否存在問題,如果是這樣,我該如何解決它。當我點擊按鈕來測試它時,表格和它的列不會被創建。

+1

1.您不檢查錯誤。如果你確實MySQL會告訴你什麼是錯的。 2.如果列是主鍵,則不需要唯一鍵。它們已經獨一無二。 –

+0

你有沒有試過將你的查詢作爲文本輸出並直接在sql實例上運行? – Andrew

+0

@約翰孔德:那麼,它可能是更獨特的主鍵和唯一約束;-) – dnoeth

回答

1

(要關閉的問題,並標記爲解決)

你創建表的代碼檢查出來。正如我在我的提交中所說的,你的代碼依賴於你設置的條件語句。

如果你使用這個表格(這似乎很明顯),檢查你的變量是否正確設置/命名。

我在質疑這也isset($success_php, $success_mysqli, $step_1_complete)所以仔細檢查一切。

「@弗雷德-II-謝謝,是錯誤的,因爲兩個變量均未設置前試圖去執行。」

在生產中添加錯誤報告到您的文件的頂部。

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

另外,我引用約翰·孔德:

「如果列是主鍵你不需要一個獨特的密鑰他們已經是獨一無二的。」