Неустранимая ошибка: вызов функции-члена prepare() при нулевом значении

код:

function insertheadright($name) {
    $str1 = xss($name);
    $sql = "INSERT INTO `nav-menu` (`id`, `Head-categories`, `RightMenu`, `LeftMenu`, `Sub-categories`, `Show-sub`, `Show-head`, `keywords`, `description`) VALUES (NULL, ?, '1', '0', '0', '0', '1', '', '')";
    $result = $connect->prepare($sql);
    $result->bindValue(1, $str1);
    $query = $result->execute();
    if ($query) {
        $num = 1;
        return $num;
    } else {
        $num = 0;
        return $num;
    }
}

код 2:

$object = insertheadright($_POST["nav-name"]);
if (isset($object)) {
    if ($object == 1)
        echo "<div class=ok>منو با موفقیت افزوده شد</div>";
    else
        echo '<div class="error">مشکل در ثبت فهرست</div>';
}

в ошибке:

Примечание: неопределенная переменная: подключение в /home/user/domains/site.com/public_html/inc/nav/function-nav.php в строке 8. Неустранимая ошибка: вызов функции-члена prepare() при нулевом значении в /home/designpr /domains/shrg.ir/public_html/inc/nav/function-nav.php в строке 8


person Chavoshipor    schedule 29.12.2015    source источник
comment
Я думаю, что ошибка должна быть довольно очевидной, переменная $connect нигде не определена. Есть ли что-то, что вы забыли сделать? Какой-то код, который вы пропустили?   -  person Some programmer dude    schedule 29.12.2015
comment
Если $connect определен вне функции, вы должны передать его ей в качестве аргумента или объявить global в начале функции.   -  person some-non-descript-user    schedule 29.12.2015


Ответы (1)


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

function insertheadright($name) {
    global $connect;

или вы можете передать его в качестве аргумента функции:

function insertheadright($connect, $name) {

В зависимости от вашего кода один может быть лучше другого, но пока вы остаетесь последовательным, все будет в порядке.

person Clay    schedule 29.12.2015
comment
Большое тебе спасибо. Клейтон - person Chavoshipor; 29.12.2015
comment
Что ж, следует упомянуть (и кто-то всегда будет :)), что использование global может быть опасным, потому что оно смешивает области видимости. Например. вы можете сделать соединение с базой данных непригодным для использования внутри функции и повлиять на все приложение. - person some-non-descript-user; 29.12.2015