Ошибка call to a member function query() on a non-object in php mysqli

151
01 мая 2019, 03:10

выскакивает ошибка call to a member function query() on a non-object

$resut = $mysqli->query("SELECT users FROM $gid WHERE $gid.id != 1 ");
$myro = mysqli_fetch_assoc($resut);
function insertLogin($myro)
{
    while ($myro == true) {
        $myroq = $myro['users'];
        $result = mysqli_query($mysqli, "SELECT * FROM users WHERE users.login='$myroq'");
        $myros = mysqli_fetch_assoc($result);
        $orgroupcountnew = $myros['orgoup'] + 1;
        $gncountnew = $myros['gn'] + 1;
        $rest = $mysqli->query("UPDATE users SET balance ='$balance', gn = '$gncountnew', orgroup = '$orgroupcountnew' WHERE users.login= '$myroq'");
    }
}

Переменная $mysqli объявлена в самом начале документа

$mysqli = new mysqli ("127.0.0.1:3306", "root", "", "mybase");
$mysqli->query("SET NAMES 'utf8'");

и при вызове этой функции insertLogin ($myro); выдает, что ошибка в этой строчке

$rest = $mysqli ->query("UPDATE `users` SET `balance` ='$balance', `gn` = '$gncountnew', `orgroup` = '$orgroupcountnew' WHERE `users`.`login` = '$myroq'");         

хотя до этого вызывается почти аналогичный запрос, но чуть другим методом (причем, если переписать $result = mysqli_query на $mysqli ->query, будет выдавать ошибку и в этой строчке, но если переделать $rest = $mysqli ->query на mysqli_query ничего работать не будет вообще, страница зависает при перезагрузке и все.

Читал, что нужно сделать через глобальную переменную и тд, но не получается ибо вставляю global $mysqli в функцию, страница опять виснет. Проблема еще в том, что это не весь код и закрывать и переоткрывать подключение не получается, не работает остальное. Помогите и объясните, пожалуйста, что нужно сделать

Попытался чуть по- другому

function insertLogin ($resut) {
    while (($myroq = $resut-> fetch_assoc()) != false) {
        $myroq = $resut['users'];

и

$resut = $mysqli->query("SELECT `users` FROM `$gid` WHERE `$gid`.`id` != 1 " ); 
insertLogin ($resut);

но все равно выскакивает ошибка

Answer 1

Добавьте второй параметр в параметры функции

$resut = $mysqli->query("SELECT users FROM $gid WHERE $gid.id != 1 ");
$myro = mysqli_fetch_assoc($resut);
function insertLogin($myro, $mysqli)
{
    while ($myro == true) {
        $myroq = $myro['users'];
        $result = mysqli_query($mysqli, "SELECT * FROM users WHERE users.login='$myroq'");
        $myros = mysqli_fetch_assoc($result);
        $orgroupcountnew = $myros['orgoup'] + 1;
        $gncountnew = $myros['gn'] + 1;
        $rest = $mysqli->query("UPDATE users SET balance ='$balance', gn = '$gncountnew', orgroup = '$orgroupcountnew' WHERE users.login= '$myroq'");
    }
}

Выделю место которое изменилось function insertLogin($myro, $mysqli)

READ ALSO
subquery doctrine 2

subquery doctrine 2

Есть запрос

166
Неоднозначный вызов функции класса

Неоднозначный вызов функции класса

Почему компилятор пишет

168
Одинаковы ли типы const int и int в шаблонах?

Одинаковы ли типы const int и int в шаблонах?

Почему программа выводит 00, ведь const int = int, то есть вызов идёт к одной и той же функции, а значит статическая переменная увеличится на единицу...

131
Передача лямбды шаблонной функции

Передача лямбды шаблонной функции

Как передать в шаблон с параметром-функцией лямбду? Почему так не работает?

195