PHP包括无法正常工作

时间:2017-03-19 21:19:57

标签: php sql include modular

所以最近我开始了一个项目,我需要加载一些文件。在这些文件中,我有通过SQL来的颜色;

问题是,我只能在一个文件中包含一种颜色。要包含的第一个文件将正常工作,但第二个文件不会。

最奇怪的是,如果我尝试添加一些回声,所有包含的文件都会回显它,但只有导入顺序中的第一个才能真正起作用。解释起来有点复杂,但有些代码可以提供帮助:

Portifolio.php(我将使用颜色)

<?php 
error_reporting(E_ALL);
include_once ('php/db.php');
include_once ('php/colors/accent.php');
include_once ('php/colors/primary.php');
$page =
<<<HTML
// Long HTML code here
<nav class="$primarycolor">
// More code
<a class ="$accentcolor">

accent.php:

<?php
include ('../db.php');

$sql = "SELECT id, color FROM Colors WHERE id = 2";
$getcolor = mysqli_query($conn, $sql);
echo "Accent.php included";

if ($getcolor->num_rows > 0) {
    while($row = $getcolor->fetch_assoc()) {
        $accentcolor = $row['color'];
    }
}

mysqli_close($conn);

?>

primary.php

<?php
include ('../db.php');

$sql = "SELECT id, color FROM Colors WHERE id = 1";
$getcolor = mysqli_query($conn, $sql);
echo "Primary.php has been included";

if ($getcolor->num_rows > 0) {
    while($row = $getcolor->fetch_assoc()) {
        $primarycolor = $row['color'];
    }
}

mysqli_close($conn);

?>

db.php中

<?php
$conn = mysqli_connect("localhost","mucap","pswd","webdata");
echo "DB included.";

if (mysqli_connect_errno())
  {
    echo "Error: " . mysqli_connect_error();
}
?>

在这种情况下:

不会显示任何错误。

$ accentcolor将起作用

$ primarycolor只会假装它不存在

所有文件都会回应他们被告知的内容。

我做了很多研究并发现它可能是文件路径的东西,但我不这么认为:这是(部分)我的文件结构:

enter image description here

我不能[$ DOCUMENT_ROOT],因为这不应该有固定的路径,很长的解释。 我该怎么办?

1 个答案:

答案 0 :(得分:-1)

尝试用以下内容替换你的陈述:

if ($getcolor) {
    while($row = $getcolor->fetch_assoc()) {
        $primarycolor = $row['color'];
    }
} else{
     echo"no results in row";
}

如果检查结果可以进行简单检查,因为搜索结果会返回&#34; FALSE&#34;如果结果中没有数据。
else语句仅用于验证目的。

如果你只想要1个结果,你可以做&#34; LIMIT 1&#34;以及消除while声明 如果您根本不希望脚本运行,则应使用require_once,而不是include_once