@ivasenkoartem

Как убрать ошибки при выводе записей из БД?

Подключение к БД
<?php
  $mysqli = false;
  function connectDB(){
    global $mysqli;
    $mysqli = new mysqli('localhost','root','root','gb');
    $mysqli->query("SET NAMES utf8");
  }
  function closeDB(){
    global $mysqli;
    $mysqli->close();
  }
 ?>


Вывод записей:
<?php
  require_once '../connect_db.php';
  function getProjects() {
    global $mysqli;
    connectDB();
    $result = $mysqli->query("SELECT * FROM `projects` ORDER BY `id` DESC");
    closeDB();
    return resultToArray($result);
  }
  function resultToArray($result){
    $array = array ();
    while (($row = $result->fetch_assoc()) != false)
      $array[] = $row;
    return $array;
  }
 ?>

Вывод записей..
require_once "admin/functions/project/database_project.php"; 
$projects = getProjects();


Ошибка:
Warning: require_once(../connect_db.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/site/admin/functions/project/database_project.php on line 2

Fatal error: require_once(): Failed opening required '../connect_db.php' (include_path='.:/Applications/MAMP/bin/php/php7.1.6/lib/php') in /Applications/MAMP/htdocs/site/admin/functions/project/database_project.php on line 2

Файлы расположены: 5ba24789ad3f6353121342.png
  • Вопрос задан
  • 128 просмотров
Решения вопроса 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
Ответ на конкретный вопрос используйте абсолютные пути или правильно рассчитывайте относительный (../../../).
Глобальный совет не занимайтесь ерундой в стиле 15 летней давности.
Правильно размещать скрипты вне корня сайта.
projectname
- app
- public
-- assets
-- .htaccess
-- index.php
-vendor
-tmp

Вместо recure используйте автозагрузку классов
Начните писать в ООП.
Изучите фреймворк(и)
Ответ написан
Комментировать
andreybold
@andreybold
Ошибка из-за отностительных путей.
Строка require_once '../connect_db.php'; должна выглядеть так: require_once 'admin/functions/connect_db.php';
При использовании require_once/require/include/include_once путь учитывается от скрипка в котором был первый из цепочки вызов. Это из-за того что эти конструкции, если можно так выразится, вставляют код вызываемого файла внутрь того, откуда вызывается, и получается что require_once '../connect_db.php'; пытается найти файл относительно файла в котором прописана
require_once "admin/functions/project/database_project.php";
строка

Решение:
Используй абсолютные пути, либо запись вроде __DIR__ . '../connect_db.php'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы