我正在尝试使用php在localhost上运行我的拳头sqlite程序,但我无法让它工作。在我的机器上,我已经安装了Sqlite3,所有这些都适用于C / C ++。
如果我将创建的数据库移动到localhost,给db文件赋予读/写权限并尝试通过php访问它我收到以下错误消息:
文件已加密或不是数据库
以下是我使用的示例代码:
<?php
$dbhandle = sqlite_open("m_test1.db", 0666, $error);
if (!$dbhandle) die ($error);
$stm = "CREATE TABLE Friends(Id integer PRIMARY KEY," .
"Name text UNIQUE NOT NULL, Sex text CHECK(Sex IN ('M', 'F')))";
$ok = sqlite_exec($dbhandle, $stm, $error);
if (!$ok)
die("Cannot execute query. $error");
echo "Database Friends created successfully";
sqlite_close($dbhandle);
?>
如果我在数据库不存在时通过浏览器运行此代码,那么我得到:
无法打开数据库:/var/www/m_test1.db
的信息:
sqlite_libversion:2.8.17
phpversion:5.3.2-1ubuntu4.14
linux Ubuntu 10.04
通过查看phpinfo,似乎启用了SQLite,SQLite3和PDO_Sqlite。
任何有助于实现这一目标的帮助将不胜感激。
编辑: 解决方案是:'chmod ugo + rwx / var / www':) 之后,sqlite_open和PDO都可以创建数据库。
答案 0 :(得分:3)
PHP5与sqlite_open()
的效果不佳。您需要使用PDO,如下所示:https://stackoverflow.com/a/4751965/369032
(从上面的答案复制的代码)
try
{
/*** connect to SQLite database ***/
$dbh = new PDO("sqlite:VPN0.sqlite");
echo "Handle has been created ...... <br><br>";
}
catch(PDOException $e)
{
echo $e->getMessage();
echo "<br><br>Database -- NOT -- loaded successfully .. ";
die( "<br><br>Query Closed !!! $error");
}
echo "Database loaded successfully ....";