Вечер добрый,не могу понять что делать с базой. В двух словах есть такое: function linkDB() { $link = mysqli_connect(HOST,USER,PASS,DB) or die("Не удалось подключится к базе данных"); mysqli_query($link,"SET NAMES 'UTF8'") or die('Не удалось установить кодировку'); return $link; } И сам mysqli_query: function catalogMenuIndex() { $query = "SELECT brand_id,brand_name,parent_id FROM brands ORDER BY parent_id,brand_id"; $res = mysqli_query(linkDB(),$query) or die('Выбор не прошол - критическая ошибка'); //Массив категорий $catalogMenuIndex = array(); while($row = mysqli_fetch_assoc($res)) { if(!$row['parent_id']) { $catalogMenuIndex[$row['brand_id']][] = $row['brand_name'];} else { $catalogMenuIndex[$row['parent_id']]['sub'][$row['brand_id']] = $row['brand_name']; } } //Освобождаем память mysqli_free_result($res); return $catalogMenuIndex; } Интересует одно,как обойтись без каждого раза вызова функции. Или же как ведет себя php с функциями? то есть он держит результат выполнения или при каждом вызове - идет в функцию и выполняет. Не навредит ли это памяти. P.S -Сильно не ругать,что не так!
Конечно же будет создаваться новое соединение при каждом вызове linkDB. Для сохранения какого-либо результата в функции, нужно объявить статичную переменную. Идея соединения через функцию такая: Код (PHP): function linkDB() { static $link; if (empty($link)) { $link = mysqli_connect(HOST,USER,PASS,DB) or die("Не удалось подключится к базе данных"); mysqli_query($link,"SET NAMES 'UTF8'") or die('Не удалось установить кодировку'); } return $link; }
На крайняк - создать статическую переменную в функции catalogMenuIndex или глобальную - вне ее, записать в нее результат вызова linkDB() и пользоваться.