2016-11-15 142 views
0

我創建了連接到數據庫,但我不知道爲什麼它總是創建一個新的空的database.sql文件。當我重命名數據庫文件時,他總是創建一個新文件,而不是給我一個錯誤。PHP PDO SQLite連接

這裏是我的代碼

try { 
    $db = new PDO("sqlite:".__DIR__."/database.sql"); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (Exception $e) { 
    echo "Unable to connect"; 
    echo $e->getMessage(); 
    exit; 
} 

echo "Connected to the database"; 

提前感謝! Denis

+1

這是PDO SQLite的工作原理 - 請參閱[本主題](http://stackoverflow.com/a/1893799/4930070)。 –

+1

[用PDO創建新的SQLite數據庫]的可能的重複(http://stackoverflow.com/questions/1893767/creating-new-sqlite-dbs-with-pdo) –

+0

「當我重命名數據庫文件時,他總是創建一個新的文件,而不是給我一個錯誤。「正如它應該。如果你想檢查文件是否存在,你可以使用'file_exists()' – 2016-11-15 20:18:20

回答

0

這是預期的行爲。當SQLite被調用時,它會查找指定的文件名。

$db = new PDO("sqlite:".__DIR__."/database.sql"); 

如果未找到database.sql文件,它將嘗試創建該文件。

另外,爲了清楚起見,您可能想要將文件擴展名從.sql更改爲.sqlite。

0

您需要將擴展​​名更改爲適當的文件類型,因爲.sql是腳本文件(用於DML或DDL操作的SQL語句),而不是實際的SQLite數據庫文件。通常,SQLite的文件擴展名包括:.db的.sqlitedb.sqlite,SQLite的3(.sqlite3.s3db.sl3)時,SQLite 2(.sl2.s2db.db2),仍然是more。列出你的目錄中的文件,找到確切的文件擴展名:

$db = new PDO("sqlite:".__DIR__."/database.db"); 

如果你需要創建一個數據庫,調用命令行(PHP可以用exec()做)到sqlite的shell保存到磁盤上的數據庫文件。然後,用PDO連接到PHP。