Объясните логиrу работы интерпретатора PHP Есть файл html, в котором js скрипт берет данные с его формы и направляет ajax'ом на файл обработчик php. В файле php написан: 1) скрипт подключения к базе данных, 2) функция записи в MYSQL данных из html формы. Но если вывести скрипт подключения к MYSQL в отдельный файл и подключать его через Require_once() База данных не подключается. Почему кто может объяснить? Почему файл обработчик не подключает внешний файл в котором прописана функция подключения к базе данных. Ощущение будто файл обработчик видит только данные которые подаются AJAX'ом и в упор не видит что подключает require_once()/
Зачем выносить скрипт подключения в отдельный файл? Вынесите только данные для подключения. Абстракции начнете сооружать, когда с основами разберетесь. По сабжу: может, путь к файлу неверно указали или еще что, мы ж не телепаты.
В общем в файле database.php за комментировал строки 9,16,17 заработало. Не понял почему, в обертке функции не работает, ведь функция все равно возвращает переменную $link PHP: <?php //подключение базы данных define('MYSQL_SERVER', 'localhost'); define('MYSQL_USER', 'root'); define('MYSQL_PASSWORD', ''); define('MYSQL_DB', 'ajaxphp'); //function db_connect(){ $link = mysqli_connect(MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB) or die("Error: ".mysqli_error($link)); if (!mysqli_set_charset($link, "utf8")){ print("Error: ".mysqli_error($link)); } // return $link; //}
@tavintavan, было более логично, чем сделали (походу вы совсем не прислушиваетесь к тому, что вам пишут). Просто после подключения файла нужно было вызывать ф-цию. И почему при !mysqli_sеt_chаrsеt тоже не diе? Это достаточно критичная ошибка.
Вот файл insert .php PHP: require_once ("database.php"); $query = "INSERT INTO news (title, text) VALUE ('" . $_POST['title'] . "', '" . $_POST['text'] . "')"; $result = mysqli_query($link, $query); if (!$result){ die(mysqli_error($link)); } если разкомментировать строки 6,16,17 в файле database.php доступ к базе не возможен, соответственно выходит ошибка. К безопасности не докапываемся, знаю что не соответствует. Это всего лишь лабораторная
I То есть вы хотите сказать что значение переменой в файле 1, вызванное при помощи require_once() в файле 2 ДОСТУПНО для следующей обработки. А результат (returne) вычисления функции в файле 1, вызванный при помощи require_once() в файле 2 НЕ ДОСТУПНО для следующей обработки и чтоб получить доступ к результатам функции надо вызвать саму функцию в файле 2. Вы это имеете ввиду?