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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵