За последние 24 часа нас посетили 32803 программиста и 1821 робот. Сейчас ищут 1633 программиста ...

Доступ к базе MYSQL через функцию (в DENWER)

Тема в разделе "PHP для новичков", создана пользователем Arhitec, 21 ноя 2018.

  1. Arhitec

    Arhitec Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    43
    Симпатии:
    1
    Доброго всем вечера!
    Уже второй день бьюсь над проблемой.
    Переносил сайт с хостинга на локальный сервер.
    На сайте подключение к базе шло через php функцию:
    PHP:
    1. function connectDB ($aw_mysql_db)
    2. {
    3.     include ( $aw_mysql_db );
    4.     $db = mysql_connect($host_db, $user_db , $pass_db);
    5.     mysql_select_db($base_db, $db);
    6.     mysql_query("SET NAMES utf8");
    7.     return $db;
    8. }
    Вызываю функцию так:
    PHP:
    1. $connectDB = connectDB ( 'путь к php-файлу с данными для доступа' );
    Долго понять не мог почему не коннектится база...
    Как только я подключился к базе напрямую:
    PHP:
    1. include ( 'путь к php-файлу с данными для доступа' );
    2. $db = mysql_connect($host_db, $user_db , $pass_db);
    3. mysql_select_db($base_db, $db);
    4. mysql_query("SET NAMES utf8");
    Таким образом подключение к базе работает правильно...
    Пробовал в функции переменные объявлять как глобальные - не помогает.
    Почему такое происходит? Почему коннект к базе через php-функцию не работает?
    Спасибо!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    мы не знаем как устроен файл "путь к php-файлу с данными для доступа" и по какому пути подключается.
    И заменить нужно include на require без скобок
     
    Arhitec нравится это.
  3. Arhitec

    Arhitec Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    43
    Симпатии:
    1
    PHP:
    1. <?
    2. $host_db="localhost";
    3. $user_db="root";
    4. $pass_db="";
    5. $base_db="databasename";
    6. ?>
    Это файл с данными для доступа к базе...
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    config.php
    PHP:
    1. <?php
    2. $host_db="localhost";
    3. $user_db="root";
    4. $pass_db="";
    5. $base_db="databasename";
    --- Добавлено ---
    для более быстрого решения , можно скинуть проект в лс
     
    Arhitec нравится это.
  5. Arhitec

    Arhitec Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    43
    Симпатии:
    1
    Решение найдено:
    PHP:
    1. // Подключаем данные для доступа к базе данных
    2. require_once 'genm к файлу с данными для доступа к базе';
    3. // Подключаемся к MYSQL
    4. $connectDB = connectDB ();
    Сама функция:
    PHP:
    1. function connectDB ()
    2. {
    3.     global $aw_mysql_db, $host_db, $user_db, $pass_db, $base_db;
    4.     mysql_connect($host_db, $user_db, $pass_db) or die(mysql_error());
    5.     mysql_select_db($base_db);
    6.     mysql_query("SET NAMES utf8");
    7. }
     
  6. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Я бы Вам посоветовал вместо Denwera использовать Open Server (на ОС Windows), а вместо MySQL - MySQLi. Denwer и Mysql устарели.
     
    Arhitec нравится это.
  7. Arhitec

    Arhitec Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    43
    Симпатии:
    1
    Да уже столкнулся с устаревшим php... Уже качаю Open Server
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Я не понял, нафига нужно было выносить эти переменные в глобальную область видимости. От параметра ф-ции при этом действительно лучше избавиться или, чтобы не страдала универсальность, сделать его присутствие вариативным.