Недавно я начал проект, в котором мне нужно загрузить несколько файлов. В этих файлах у меня есть цвета, которые приходят через 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 просто сделает вид, что его не существует
Все файлы будут отражать то, что им было сказано.
Я провел много исследований и выяснил, что это может быть что-то с путями к файлам, но я так не думаю: Вот часть (часть) моей файловой структуры:
Я не могу сделать [$ DOCUMENT_ROOT], так как это не должно иметь фиксированный путь, длинное объяснение.
Что я должен делать?
Попробуйте заменить ваше заявление на это:
if ($getcolor) {
while($row = $getcolor->fetch_assoc()) {
$primarycolor = $row['color'];
}
} else{
echo"no results in row";
}
Простая проверка if возможна, потому что результаты поиска возвращают «FALSE», если в результатах нет данных.
Оператор else требуется только для целей проверки.
Если вы ожидаете только 1 результат, вы можете выполнить «LIMIT 1», а также исключить оператор while.
Если вы вообще не хотите запускать скрипт, вы должны использовать require_once, а не include_once
Других решений пока нет …