gpt4 book ai didi

php - 将文件用于数据库类 : permission denied 中的 PDO 连接后删除文件(使用 unlink())

转载 作者:行者123 更新时间:2023-11-29 22:06:55 25 4
gpt4 key购买 nike

所以我有以下 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 对象与数据库的连接,必须设置 = null。

之后我尝试了:

unset($database);

权限被拒绝。所以我做了一个外部文件delete.php:

<?php unlink('test.sq3'); ?>

该脚本正在运行。所以我可以在另一个脚本中删除该文件。我尝试的最后一件事(使用 =null 和 unset()):

include('delete.php');

这也不起作用。但主要的是我不知道为什么我无法在同一脚本中删除该文件。

那么如何在同一脚本中删除数据库文件?

最佳答案

所以现在我发现出了什么问题。在方法查询中,如下所示:

    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 对象有关的每个变量,但重点是现在他删除了该文件。

关于php - 将文件用于数据库类 : permission denied 中的 PDO 连接后删除文件(使用 unlink()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32080183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com