我有点迫切需要帮助...
我已经在这个项目上工作了好几个小时才能碰到一堵我无法克服的墙。
我创建了一个小型数据库,我使用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'");
}
?>
更新:将我的数据库文件扩展名从sqlite切换到db并通过sqlite3打开它,如下所示摆脱了错误,但现在我有两个新的错误: 未定义的变量:第29行的db和
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 :(得分:2)
从版本5.4开始,PHP源代码中删除了sqlite扩展名: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());
?>