【问题标题】:Why should I use __DIR__ when creating an SQLite database with PDO?使用 PDO 创建 SQLite 数据库时,为什么要使用 __DIR__?
【发布时间】:2017-03-02 18:10:30
【问题描述】:

我在使用 PHP 方面非常初级,直到现在,我一直在使用 mysqli。有人告诉我一般要学习 PHP,所以,我找到了一个使用 SQLite PDO 进行 CRUD 的教程。

我刚刚从第一个视频开始,我已经很困惑了...... 我对互联网和 php 文档进行了研究,但我找不到我正在寻找的答案。

$db = new PDO("sqlite:".__DIR__."/the_database.db");

这是创建数据库的行;我的问题:

数据库是否需要位于我项目的根目录中?我在互联网上找到了很多不同的选项.....几乎所有的数据库都没有用 .db 完成,而是用 .sqlite ......但我希望这部分将在本教程的后面进行解释。

我最大的问题是,我为什么要添加".__DIR.__",是因为它必须在根文件夹中吗?或者我可以把它放在$db = new PDO("sqlite:"the_database.db"); 吗?我一直试图自己回答这个问题,试图找到如何“显示数据库”或类似的东西,但这个 SQLite 似乎很复杂......

谢谢

【问题讨论】:

  • __DIR__ 不是根目录。它是您调用它的文件的目录。查看Magic Constants了解更多详情。
  • 但是,文件是用那行创建的,对吧?我明白……如果我回显(DIR);它显示我的项目的根文件夹。 (正是 /ltd/www/sites/motors06/root/my_tracker,因为我在服务器上工作)。那么,你是什么意思它是我调用它的文件的目录?谢谢你:)
  • 他的意思是当你的脚本在根文件夹时,那么__DIR__显示根文件夹。
  • 它显示/ltd/www/sites/motors06/root/my_tracker,因为*.php 文件保存在/ltd/www/sites/motors06/root/my_tracker。如果您将文件保存在/somewhere/else,它将显示/somewhere/else。请注意,我们讨论的是您在文本编辑器中看到的特定文件,而不是您可能正在执行上一个文件的require 的顶级脚本。

标签: php database sqlite pdo


【解决方案1】:

首先,您不必将 PDO 与 SQLite 一起使用。如果您愿意,可以将它与 mysql 一起使用。而且我确信也有很多使用 mysql 的视频。虽然我坚信所有的视频教程都是废话,会让你不是程序员而是相反的人。

现在回到 SQLite。所以你的问题归结为__DIR__ 常量,它简单地表示脚本所在的目录。

你看,SQLite 数据库只是一个文件。所以它可以有任何名称或扩展名,并且可以放在你选择的任何目录中。唯一的问题是访问新创建的数据库。想象一下你的网站上有两个 php 脚本,一个是

/index.php

另一个是

/account/register.php

两者都使用数据库。

如果您将 SQLite 数据库文件处理为“sqlite:the_database.db”,那么您最终会得到两个数据库 - 一个在根文件夹中,一个在帐户文件夹中。这就是为什么您必须始终在文件名前加上绝对路径。而__DIR__ 常量是这样做的方法之一。如果有一个单个文件调用$db = new PDO,那么可以使用这个常量

【讨论】:

  • 好的....现在看起来更清晰了,但同时我也很迷茫。你知道在哪里我可以理解 SQLite 是如何以非常基本的方式工作的吗?正如我所说,我在 php 文档上阅读过它,但我不明白,事实上....我不太使用它,因为所有 php 都在那里解释,我觉得它很复杂:s
  • 好吧,基本上 sqlite 就像任何其他 SQL 数据库一样工作。你实际上并不知道它是如何工作的。就用它吧。以一种非常基本的方式,它只是一个文件,您的数据存储在其中,您正在使用 SQL 来查询该数据。
猜你喜欢
  • 2011-09-13
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
相关资源
最近更新 更多