2012-04-11 76 views
0
<?php 
try { 
    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
    $sql = $DBH->exec(" 
    CREATE TABLE `store_config` (
    store_name varchar(30), 
    last_update date) 
    "); 
} catch (PDOException $e) { 
    echo "Could not connect to database."; 
    $DBH = null; 
} 
?> 

不引發PDOException,可能存在SQL錯誤,但我不知道如何檢索該錯誤,並且當我使用phpMyAdmin檢查數據庫時沒有創建表。我做錯了什麼?爲什麼這個PHP/SQL不會創建表?

感謝您的閱讀。

編輯: 當我執行相同的SQL代碼直接到phpMyAdmin的它給了權限被拒絕錯誤...

1142 - 創建拒絕用戶 '$用戶' @ '$ my_ip' 爲table命令' store_config'

我很困惑,因爲當我使用web主機web窗體創建用戶時,它沒有給我選項來授予任何權限,但只是爲了讓此用戶成爲數據庫所有者 - 是我必須做的嗎?

編輯:

我給我的用戶帳戶「DBO訪問」,它現在工程(創建表)。

感謝您的意見。

+1

的SQL工作,如果你只是把它放到MySQL的,所以它必須是它沒有連接或您的dbname是不是一個實際的數據庫在MySQL的名稱,或者用戶沒有權利對D B。 – thezboe 2012-04-11 21:28:23

+0

@thezboe請參閱我的文章中的編輯 - 我現在有一個錯誤(權限被拒絕) – Ozzy 2012-04-11 21:31:08

回答

1

試試這個。它應該讓你找到你要找的錯誤,這會告訴你發生了什麼事情。

<?php 
try { 
    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
    $sql = $DBH->exec(" 
    CREATE TABLE `store_config` (
    store_name varchar(30), 
    last_update date) 
    ") or die(print_r($DBH->errorInfo(), true)); 
} catch (PDOException $e) { 
    echo "Could not connect to database."; 
    $DBH = null; 
} 
?> 
+0

+ $爲'$ DBH-> errorInfo()',謝謝。 @NathanielFord請查看帶有錯誤的更新問題 – Ozzy 2012-04-11 21:30:08

0

您需要找到一種方法,從您運行代碼的機器向您的用戶授予創建權限。用戶可能只有本地主機的權限,因此您必須將代碼上傳到服務器並在那裏運行以獲得權限。

+0

其實你可能不需要準備它。通常就是我這樣做的方式。 – thezboe 2012-04-11 21:22:13

+0

感謝您的回答。我嘗試過,但它仍然不會創建任何表格。 – Ozzy 2012-04-11 21:22:46

相關問題