Глобальное подключение к БД

220
06 октября 2017, 18:18

Создал config.php в нем прописал подключение к БД:

function connectToDB() {
    global $link;
    $link = mysqli_connect('localhost','root','','notepad');
    return $link;
}

Прописал в index.php:

require_once 'config.php';
require_once 'functions.php';

Как теперь сделать, чтобы в function.php не подключаться каждый раз к БД, как у меня это сейчас прописано? То есть, к примеру, тут чтобы было так:

function saveTask($title,$description){
    $sql = "INSERT INTO tasks (title, description) VALUE ('$title','$description')";
    mysqli_query($link,$sql);
}

Переменная $link берется из config.php. Но в данный момент момент у меня не получается так сделать. Что не так указываю?

База: MySql. Язык: PHP

Answer 1

Можно попробовать вот так:

function connectToDB() {
    static $link;
    return !isset($link) ? $link = mysqli_connect('localhost','root','','notepad') : $link; 
}

если коннекта не было установлено - он его создаст и запишет в переменную. если коннект уже был - оно просто возвратит его. И тогда далее если Вам где-то требуется коннект - то вызываете просто connectToDB()

Answer 2

Набросал схему, по которой вам надо будет действовать в ваших функциях. Скопируйте код целиком в отдельный файл, и посмотрите на его результат в браузере -- таким образом вам станет понятен его смысл :

connectToDB(); // Обязательный вызов ДО ф-ции saveTask()
echo saveTask(); // Выведет: connectToDB

function connectToDB() {
    global $link;
    $link = __FUNCTION__;
    return $link;
}
function saveTask() {
    global $link;
    return $link;
}
Answer 3

Если правильно Вас понял, то функция saveTask должна выглядеть так:

function saveTask($title,$description){ 
    $sql = "INSERT INTO tasks (title, description) VALUE ('$title','$description')"; 
    mysqli_query(connectToDB(),$sql); 
}

Переменной $link в вашем коде неоткуда взяться. А так connectToDB() вернёт как раз ту самую переменную $link

P.S. Сделайте var_dump($link) в saveTask()

READ ALSO
Проверка капчи в форме обратной связи

Проверка капчи в форме обратной связи

Есть отдельно проверка формы обратной связи и проверка капчиКак вставить проверку капчи в код проверки формы? Вот код проверки формы обратной...

161
Запись файлов в бд

Запись файлов в бд

Можно ли записать в бд txt файл? или только его содержимое?

179