2014-12-07 114 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