所以我有以下php脚本test.php:
<?php
class Database {
public $databaseConnection;
function __construct(){
$this->databaseConnection = new PDO('sqlite:test.sq3', 0, 0);
$this->databaseConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::query('CREATE TABLE...');
}
function query($sql, $params = NULL){
...
}
function insert($table, $data){
...
}
}
$database = new Database();
$database->insert(...);//insert something into Database
$userData = $database->query(...);//getting $userData after query
$username = $userData;
print_r($username);
$database = null;
unlink('test.sq3');
所以每个人都能正常工作直到最后一行。
Permission denied in F:\...\test.php on line 75
我已经查阅了文档中的内容:
Instruction separation:
http://php.net/manual/en/language.basic-syntax.instruction-separation.php
Connections and Connection management (of PDO-objects):
http://php.net/manual/en/pdo.connections.php
因此,要结束PDO-ocject与数据库的连接,必须设置= null。
之后我尝试了:
unset($database);
许可被拒绝。所以我做了一个extern文件delete.php:
<?php unlink('test.sq3'); ?>
此脚本正常运行。所以我可以在另一个脚本中删除该文件。 我尝试的最后一件事(使用= null和unset()):
include('delete.php');
哪个都不起作用。但主要的是我不知道为什么我不能在同一个脚本中删除文件。
那么如何在同一个脚本中删除数据库文件呢?
答案 0 :(得分:0)
所以现在我发现什么是错的。在方法查询中看起来像:
function query($sql, $params = NULL){
$s = $this->databaseConnection->prepare($sql);
if(is_array($params)){
$s->execute(array_values($params));
return $s;
}
$s->execute((array) $params);
return $s;
}
正如你所看到的那样,没有fetch() - 语句,因为我想尝试一下没有它的情况。所以你得到一个输出就像:
PDOStatement Object ( [queryString] => SELECT username FROM user WHERE numberoflogins = ? )
我跳过了它,因为我觉得它在工作时并不是真的有必要。
好吧,至少我不知道这个PDO方法对我脚本的结尾有什么东西,因为我取消了与PDO对象有一些东西的每个变量,但关键是现在他删除了文件。