doutuo6048 2016-10-20 16:17
浏览 55
已采纳

在使用PDO创建SQLite数据库时,为什么要使用__DIR__?

I am very junior working with PHP, and until now, I have been working with mysqli. I have been told to learn PHP in general, so, I found a tutorial for doing CRUD using SQLite PDO.

I literally just started it with the first video, and I am confused already... I have done research on internet and php documentation, but I can't find the answer I am looking for.

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

This is the line to create the database; my question:

Does the database needs to be in the root directory of my project? I am finding so many different options on internet..... almost all of them the database doesn't even finish with .db but with .sqlite .... but I hope this part will be explained later on the tutorial.

My big question is, why am I adding ".__DIR.__", is it because it HAS TO BE on the root folder? Or could I just place it as $db = new PDO("sqlite:"the_database.db"); ? I have been trying to answer the question myself, trying to find how to "SHOW DATABASES" or something like that but this SQLite seems so complex....

Thank you

  • 写回答

1条回答 默认 最新

  • duanguangsong2380 2016-10-20 16:34
    关注

    First of all, you don't have to use PDO with SQLite. You can use it with mysql if you wish. And I am sure that there are a lot of videos that are using mysql as well. Though I am strongly convinced that all video tutorials are crap that will make you not a programmer but something opposite.

    Now back to SQLite. So your question boils down to the __DIR__ constant which simply denotes the directory where lies the script where it written.

    You see, SQLite database is simply a file. So it can have whatever name or extension, and be placed in any directory of your choice. The only problem with is the access to a newly created database. Imagine there are two php scripts on your site, one is

    /index.php
    

    and another is

    /account/register.php
    

    both working with a database.

    If you address an SQLite database file as just "sqlite:the_database.db", then you'll end up with TWO databases - one in the root folder and one in the account folder. This is why you have to always prefix the filename with the absolute path. And __DIR__ constant is one of the ways to do so. If have a single file where $db = new PDO is called, then it's ok to use this constant

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ros的rviz仿真机器人
  • ¥15 关于#linux#的问题(输入输出错误):出现这个界面接着我重新装系统,又让修电脑的师傅帮我扫描硬盘(没有问题)用着用着又卡死(相关搜索:固态硬盘)
  • ¥15 cv::resize不同线程时间不同
  • ¥15 web课程,怎么做啊😭没好好听课 根本不知道怎么下手
  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊
  • ¥15 会会信号与系统和python的来