@exquio

Конфликт mysqli и include_once?

Здравствуйте,

При переезде на php7/mysql5 возник следующий конфликт:

данные для подключения к бд лежат в отдельном файле db.php, подключаются по старинке:
include_once ($_SERVER["DOCUMENT_ROOT"]."/s/php/db.php");


Далее идет подключение к бд:

$link = mysqli_connect(
    $host,
    $user,
    $pass,
    $db);
        
    if(!$link) {
        echo mysqli_connect_error();
    }
    
    $q = mysqli_query($link, "SELECT * FROM `flights` WHERE pod = '".$pod."' ORDER BY id DESC LIMIT 5");


На старой версии php/mysql такая конструкция работала без проблем (через функции mysql_connect, mysql_query), а в новой страница выдает ошибки:
Warning: mysqli_connect(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO) in /Users/aaa/Sites/s/php/functions.php on line 11
Access denied for user ''@'localhost' (using password: NO)
Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /Users/aaa/Sites/s/php/functions.php on line 17

Однако при этом функция РАБОТАЕТ и выдает запрашиваемые данные. Пароль к юзеру установлен.

Стоит поменять в подключении к серверу переменные на конкретные данные без подключения файла:

$link = mysqli_connect(
    "localhost",
    "root",
    "pass",
    "test");


Как все ошибки пропадают и выдача данных по прежнему работает. Логично предположил, что функция include_once как то некорректно подключает файл с данными к бд, но там все ок и еще раз повторюсь - соединение то работает. В чем проблема?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 3
@karminski
Senior React.JS Developer
Решите сначала главную проблему:
Warning: mysqli_connect(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO)

Укажите правильно настройки подключения к БД.
Ответ написан
Комментировать
@BorisKorobkov Куратор тега MySQL
Web developer
  1. файл не инклдится, потому что путь $_SERVER["DOCUMENT_ROOT"]."/s/php/db.php" неправильный.
  2. или потому что в нем определяются одни переменный, а потом используются другие ($host и пр.)
  3. дебажить вы не умеете
  4. читать ошибки в логе тоже не умеет
  5. вывод ошибок у вас подавлен
  6. несмотря на ошибку mysqli_connect_error() следующим шагом все равно пытаетесь выполнить запрос
  7. про SQL-инъекции вы никогда не слышали
  8. и вообще все это феерический говнокод
Ответ написан
Комментировать
@exquio Автор вопроса
Проблема решилась через define для настроек к подключению БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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