doutuo6048 2016-10-20 08: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 08: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

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

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部