2014-12-07 162 views
0

我有點需要幫助,這...SQLite的PHP連接故障

我一直在這個項目上工作了幾個小時纔打到我無法克服的牆。

我做了一個小數據庫,我使用firefox的sql管理器創建,並且數據庫確實包含數據並具有.sqlite擴展名。但無論我試圖看待其他人的問題和答案,我都無法使其工作。每次我認爲我已經得到它會引發新的錯誤。

有人認爲他們可以幫助我找出問題嗎?我一直在這麼做很久,在這一點上我非常沮喪,我不知道該做什麼。我通過XAMPP運行我的網站,並從PHP收到此錯誤:

Fatal error: Call to undefined function sqlite_open() in C:\xampp\htdocs\Projects\FinalProject\You_Shall_Pass.php on line 4 

我試圖修改XAMPP的php.ini的支持sqlite的,但它仍然沒有連接,我已經改變了連接方法現在幾次沒有任何結果,只是錯誤發生了輕微的變化。

如果任何人都可以幫忙,我甚至不能告訴你我多麼感激。我對這個項目感到無比興奮,我的書似乎並沒有解釋如何連接到一個sqlite文件。

代碼:

<?php 

// Open database 
$dbHandle = sqlite_open('YSP_db.sqlite', 0666, $error); 

if(!$dbhandle) die ($error); 

//Method selects function for login or new account procedure 
if(isset($_POST['profileName'])) 
{ 
    getUserData(); 
} 
elseif(isset($_POST['newProfileName'])) 
{ 
    createNewUser(); 
} 
else {echo "why god why?";} 

function getUserData() 
{ 
    $login = $_POST['profileName']; 
    $rows = $dsn->query("SELECT idUser FROM user WHERE name = '$login'"); 
} 



?> 

UPDATE:交換我的數據庫文件的擴展名從源碼開放它通過sqlite3的以分貝正如以下建議擺脫錯誤的,但現在我有兩個新: 未定義的變量:DB上線29和

Fatal error: Call to a member function query() on a non-object line 29 

我也試圖通過類來替代打開數據庫,所以現在看起來是這樣的:

?php 
class MyDB extends SQLite3 
{ 
function __construct() 
{ 
    $this->open('YSP_db.db'); 
} 
} 

// Open database 
$db = new MyDB(); 

if(!$db) die ($error); 

//Method selects function for login or new account procedure 
if(isset($_POST['profileName'])) 
{ 
    getUserData(); 
} 
elseif(isset($_POST['newProfileName'])) 
{ 
    createNewUser(); 
} 
else {echo "why god why?";} 

function getUserData() 
{ 
    $login = $_POST['profileName']; 
    $rows = $db->query("SELECT idUser FROM user WHERE name = '$login'"); 
} 



?> 

我會繼續選擇它,但如果有人知道這個問題的根源,請讓我知道,並非常感謝你的幫助。

+0

如果它的任何安慰無論如何,我有完全相同的問題,一年或兩年回來,檢查啓用sqlite的擴展等在.ini,毫無效果。但我會環顧四周。查看http://stackoverflow.com/questions/4788853/call-to-undefined-function-sqlite-open for starteers。 – Hektor 2014-12-07 20:43:46

+0

@ user2356315謝謝。我會繼續尋找更多的信息,但在這一點上我真的很難過。 – Alzecha 2014-12-07 20:46:06

+0

您使用的是哪個版本的PHP? – 2014-12-07 20:52:16

回答

2

SQLite的延伸部從PHP源移除的5.4版本:http://php.net/manual/en/migration54.removed-extensions.php

注意,sqlite3的擴展名應該被代替使用。下面是使用它的一個例子:

<?php 
$db = new SQLite3('mysqlitedb.db'); 

$db->exec('CREATE TABLE foo (bar STRING)'); 
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')"); 

$result = $db->query('SELECT bar FROM foo'); 
var_dump($result->fetchArray()); 
?> 
+0

我明白了。我的數據庫是在用於firefox的sqlite管理器插件中創建的,因爲我無法讓其他管理器運行。該擴展名仍然是.sqlite,但有人說,它仍然可以是一個sqlite3文件。有什麼方法可以告訴我正在使用哪一個? – Alzecha 2014-12-07 21:01:15

+0

謝謝你的幫助。這擺脫了那個錯誤,但現在我在一個新的狀態$ db是一個未定義的變量,我假設是從我的數據庫擴展名爲.sqlite,所以我想我需要找到一種方法來改變它。我還有另一個錯誤,說'致命錯誤:調用一個非對象的成員函數query()',但是我會在這之後解決這個問題。 – Alzecha 2014-12-07 21:09:38

+0

更新:試圖將YSP_db.sqlite更改爲。分貝,但錯誤仍然存​​在。如果沒有轉換器或其他什麼東西,我不知道這是否是我可以做的或不是。 – Alzecha 2014-12-07 21:14:25