每次我必须将我的connection.php
文件与索引文件一起放入我的子文件夹中。我无法理解为什么每次都要在我的子文件夹中放入我的连接文件。
我还尝试将我的连接文件放在根文件夹中,并通过它的路径名/connection.php
包含它,但它不会获取Mysql数据。
它不适用于require''
,include''
,include_once''
我无法在这个主题上找到很多帮助。难道没有更好的方法吗?
更新
文件结构
localhost/school/icse/index-icse
我必须将connect_mysqli.php
放在每个子文件夹中,如此
代码:
<?php
include'connect_mysqli.php';
$output = '';
$sql = "SELECT * FROM city WHERE state_id = '".$_POST["stateId"]."' ORDER BY city_name";
$result = mysqli_query($link, $sql);
$output = '<option value="">Select City</option>';
while($row = mysqli_fetch_array($result))
{
$output .= '<option value="'.$row["city_id"].'">'.$row["city_name"].'</option>';
}
echo $output;
?>
谢谢!
conSub
是包含我的连接文件connect_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");
请检查这是我的数据结构
答案 0 :(得分:2)
PHP包含将查看当前目录(即被调用脚本的目录),以及php.ini中定义为include_path的任何内容。您还可以使用set_include_path()
添加此内容。
因此,在某些时候,您需要在脚本中引入对基本目录的引用:
set_include_path('/var/www/html/school');
require_once("connect_mysqli.php");
或
require_once("/var/www/html/school/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";
}
有许多方法可以改善这一点,但它会给你一些骨头。
顺便说一句,在您的代码中,您通过将原始$ _POST变量放入数据库查询来打开SQL注入攻击。它至少应该被逃脱。请阅读:http://php.net/manual/en/security.database.sql-injection.php
答案 1 :(得分:0)
如果我理解,请尝试这个
<?php require_once("../../conSub/connect_mysqli.php");?>
使用require_once并使用/connection.php指定子文件夹名称 我希望它有效
以“/”开头,返回根目录并从那里开始
以“../”开头向后移动一个目录并从那里开始
从“../../”开始向后移动两个目录并从那里开始(依此类推......)
答案 2 :(得分:0)
首先检查您是否输入了文件的corrct名称。
其他一些可能的解决方案:
如果您的文件connect_mysqli.php
和index.php(或其他)位于同一目录中,则可以使用这些选项
include_once("./connect_mysqli.php");
或
include_once("connect_mysqli.php");
如果您的connect_mysqli.php
位于public_html/conSub
且需要连接的文件位于school/icse
,那么您可以像这样使用
include_once("../../conSub/connect_mysqli.php");
或者如果你的public_html目录是根目录,那么你也可以使用它
include_once("/conSub/connect_mysqli.php"); //only if public_html is root dir