2013-03-19 90 views
1

我對此很新,需要一些幫助。PDO沒有創建CREATE TABLE

我想輸入一個數組到PDO數據庫;數據庫使用此代碼創建:

$createdb = $db->exec("CREATE DATABASE $validdbname; 
CREATE USER '$user'@'localhost' IDENTIFIED BY '$password'; 
GRANT ALL ON `$validdbname` .* TO '$user'@'localhost'; 
FLUSH PRIVILEGES;") 
or die(print_r($db->errorInfo(), true)); 
// Check for success 
if ($createdb) 
{ 
    echo 'Database Created!<br /><br />'; 
} 
else echo "Database not successfully created! <br /><br />"; 

這個成功的作品,但是當我試圖創建具有非常相似的代碼創建的數據庫中的表,這不起作用:

$createtable = $db->exec("CREATE TABLE IF NOT EXISTS webdata (
id INTEGER NOT NULL AUTO_INCREMENT, 
data VARCHAR(200) NOT NULL, 
PRIMARY KEY (id))") 

or die(print_r($db->errorInfo(), true)); 

我有檢查PHPMyAdmin以查看是否創建了一個表,在創建數據庫時表中沒有。這是顯示的錯誤:

Array ([0] => 00000 [1] => [2] =>) 

如果有必要,我很樂意提供更多的代碼或信息。我無法弄清楚爲什麼會發生這種情況,並且非常感謝任何輸入,謝謝。

+0

這看起來非常類似的問題: [鏈接] (HTTP: //stackoverflow.com/questions/10562602/after-creating-table-it-shows-this-array-0-00000-1-2)[link] – 2013-03-19 16:08:02

+0

pdo的錯誤處理與舊的mysql不同。按照[PDO標記wiki](http://stackoverflow.com/tags/pdo/info)中所述進行連接,並且您將不需要'或die()'東西,但是您的錯誤已顯示 – 2013-03-19 16:19:18

回答

0

您需要

$db->exec('USE ' . $validdbname); 
兩個查詢之間

,或者使用一個完全合格的名稱CREATE TABLE

CREATE TABLE IF NOT EXISTS $validdbname.webdata (... 
+0

感謝您的意見,我已只是在代碼上嘗試了這些建議,並且仍然收到了相同的錯誤。對不起,是一個滋擾。 – 2013-03-19 16:19:34

+0

@CamWestwood嘗試在CREATE DATABASE之後立即運行CREATE TABLE(即在解決特權問題之前)。 – DaveRandom 2013-03-19 16:25:50

+0

非常感謝你,我根據你的建議嘗試了這一行代碼(下面),現在它可以工作。 $ connect = $ db-> exec(「USE $ validdbname;」); – 2013-03-19 16:36:01