Php 是否可以将我的连接文件放在根目录中并从子目录中获取数据?
每次我都必须将Php 是否可以将我的连接文件放在根目录中并从子目录中获取数据?,php,mysql,Php,Mysql,每次我都必须将connection.php文件与索引文件一起放入子文件夹。我不明白为什么每次都要将连接文件放在子文件夹中 我还尝试将我的连接文件放在根文件夹中,并按路径名/connection.php包含它,但它不获取Mysql数据 它不适用于要求“”,包含“”,包含一次“” 在这个话题上我找不到什么帮助。难道没有更好的办法吗 更新: 文件结构 localhost/school/icse/index-icse 我必须把我的connect_mysqli.php放在这样的每个子文件夹中 inclu
connection.php
文件与索引文件一起放入子文件夹。我不明白为什么每次都要将连接文件放在子文件夹中
我还尝试将我的连接文件放在根文件夹中,并按路径名/connection.php
包含它,但它不获取Mysql数据
它不适用于要求“”
,包含“”
,包含一次“”
在这个话题上我找不到什么帮助。难道没有更好的办法吗
更新:
文件结构
localhost/school/icse/index-icse
我必须把我的connect_mysqli.php
放在这样的每个子文件夹中
include_once("../../conSub/connect_mysqli.php");
代码:
谢谢大家!
conSub
是包含我的连接文件的文件夹connect\u mysqli.php
第二个红色圆圈表示我们现在在这个子文件夹中
正常情况下,它应该能工作。我不知道,有什么问题。。。
我试过了
include(“/conSub/connect_mysqli.php”)代码>
include(“conSub/connect_mysqli.php”)代码>
include_once(“/conSub/connect_mysqli.php”)代码>
include_once(“conSub/connect_mysqli.php”)代码>
require(“/conSub/connect_mysqli.php”)代码>
require(“conSub/connect_mysqli.php”)代码>
如果我理解,请试试这个
<?php require_once("../../conSub/connect_mysqli.php");?>
使用require_一次并用/connection.php指定子文件夹名称
我希望它能起作用
以“/”开头返回根目录并从那里开始
以“./”开头向后移动一个目录并从那里开始
以“./../”开头向后移动两个目录并从那里开始(以此类推)如果我理解,请尝试此操作
<?php require_once("../../conSub/connect_mysqli.php");?>
使用require_一次并用/connection.php指定子文件夹名称
我希望它能起作用
以“/”开头返回根目录并从那里开始
以“./”开头向后移动一个目录并从那里开始
从“./../”开始向后移动两个目录并从那里开始(以此类推)PHP include将查找当前目录(即调用的脚本目录),以及PHP.ini中定义为include\u路径的任何内容。您还可以使用
set\u include\u path()
将其添加到该列表中
因此,在某个时刻,您需要在脚本中输入对基目录的引用,或者:
set_include_path('/var/www/html/school');
require_once("connect_mysqli.php");
或
这两种方法都不理想,因为您正在将站点的位置硬编码到代码中——这不是很好移植
更好的做法(以及大多数PHP框架的做法)是通过单个index.PHP文件运行所有内容。假设您使用Apache,您可以使用mod_rewrite和.htaccess文件使URL友好,例如:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
那么index.php应该有全局包含和一些路由逻辑,如下所示:
require_once "connect_mysqli.php";
if(file_exists($_GET['page'] . '.php') {
require_once ($_GET['page'] . '.php');
}
else {
require_once "error.php";
}
有很多方法可以改进这一点,但它会让你一目了然
另一方面,在代码中,通过将原始$\u POST变量放入数据库查询,您将面临SQL注入攻击。它至少应该逃脱。请阅读以下内容:PHP include将查找当前目录(即调用的脚本目录),以及PHP.ini中定义为include_路径的内容。您还可以使用
set\u include\u path()
将其添加到该列表中
因此,在某个时刻,您需要在脚本中输入对基目录的引用,或者:
set_include_path('/var/www/html/school');
require_once("connect_mysqli.php");
或
这两种方法都不理想,因为您正在将站点的位置硬编码到代码中——这不是很好移植
更好的做法(以及大多数PHP框架的做法)是通过单个index.PHP文件运行所有内容。假设您使用Apache,您可以使用mod_rewrite和.htaccess文件使URL友好,例如:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
那么index.php应该有全局包含和一些路由逻辑,如下所示:
require_once "connect_mysqli.php";
if(file_exists($_GET['page'] . '.php') {
require_once ($_GET['page'] . '.php');
}
else {
require_once "error.php";
}
有很多方法可以改进这一点,但它会让你一目了然
另一方面,在代码中,通过将原始$\u POST变量放入数据库查询,您将面临SQL注入攻击。它至少应该逃脱。请阅读以下内容:首先检查您是否键入了正确的文件名 其他一些可能的解决方案: 如果您的文件
connect\u mysqli.php
和index.php(或其他)在同一目录中,您可以使用这些选项
include_once("./connect_mysqli.php");
或
如果您的connect\u mysqli.php
位于public\u html/conSub
中,并且需要连接的文件位于school/icse
,那么您可以这样使用
include_once("../../conSub/connect_mysqli.php");
或者,如果您的public_html dir是根目录,那么您也可以使用它
include_once("/conSub/connect_mysqli.php"); //only if public_html is root dir
首先,检查是否键入了正确的文件名 其他一些可能的解决方案: 如果您的文件
connect\u mysqli.php
和index.php(或其他)在同一目录中,您可以使用这些选项
include_once("./connect_mysqli.php");
或
如果您的connect\u mysqli.php
位于public\u html/conSub
中,并且需要连接的文件位于school/icse
,那么您可以这样使用
include_once("../../conSub/connect_mysqli.php");
或者,如果您的public_html dir是根目录,那么您也可以使用它
include_once("/conSub/connect_mysqli.php"); //only if public_html is root dir
@请看一看。这是一样的,包括一个文件在不同文件夹中的多个脚本中使用同一行代码。@请看一看。这是关于同样的事情,包括在不同文件夹中的多个脚本中使用同一行代码的文件。谢谢@james geldart,我从来不知道我们也可以使用.htaccess文件。我熟悉.htaccess文件。我一定会试试这个。请详细说明最后一行“^(.*)$index.php?page=$1[L,QSA]”是的,这将通过