Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
1

Mysqli_query() expects parameter 1 to be mysqli, null given in

30.10.2015, 17:42. Показов 1259. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Такая проблема. Есть функция connect и из нее нужно передать переменную $connect в функцию welcome, в mysqli_query. Получаю ошибку "Undefined variable: connect in" и "mysqli_query() expects parameter 1 to be mysqli, null given in...". На другом форуме сказали что можно как-то через return. Но я не понимаю как(
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function connect($host, $user, $password, $dbname)
    {
        $connect = mysqli_connect("$host", "$user", "$password", "$dbname");
        if (!$connect) 
        {
            $error = "Нет соединения с базой данных";
            echo "$error";
        }
    }
 
    function welcome()
    {
        if (!first_check($string = $_POST['login']) AND !second_check($string = $_POST['login'])) 
        {
            if (!connect($host = "localhost", $user = "root", $password = "root", $dbname = "admin")) 
            {
                $input_login = $_POST['login'];
                $sql = ("SELECT login, password FROM users WHERE login = '$input_login' ");
                $query = mysqli_query($connect, $sql);
            }
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2015, 17:42
Ответы с готовыми решениями:

Mysqli_query() expects parameter 1 to be mysqli, string given
Здравствуйте. Подскажите, пожалуйста. Базу данных хочу создать. В mysqli_connect имя базы данных не...

Ошибка mysqli_query() expects parameter 1 to be mysqli, object given in
новичок в php, пытаюсь сделать авторизацию есть код на html <table> <tr> <td>Phone:</td>...

Mysqli_query() expects parameter 1 to be mysqli, null given
Всем привет. Помогите пожалуйста решить проблему. <div id="container"> <?php ...

WARNING: MYSQLI_QUERY() EXPECTS PARAMETER 1 TO BE MYSQLI, NULL GIVEN IN
Помогите пожалуйста! Вот так не работает. Убираю функцию, напрямую все работает function...

10
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
30.10.2015, 17:50 2
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function connect($host, $user, $password, $dbname)
    {
        global $connect;
        $connect = mysqli_connect("$host", "$user", "$password", "$dbname");
        if (!$connect) 
        {
            $error = "Нет соединения с базой данных";
            echo "$error";
        }
    }
 
    function welcome()
    {
        global $connect;
        if (!first_check($string = $_POST['login']) AND !second_check($string = $_POST['login'])) 
        {
            if (!connect($host = "localhost", $user = "root", $password = "root", $dbname = "admin")) 
            {
                $input_login = $_POST['login'];
                $sql = ("SELECT login, password FROM users WHERE login = '$input_login' ");
                $query = mysqli_query($connect, $sql);
            }
        }
    }
0
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
30.10.2015, 17:57 3
Цитата Сообщение от crautcher Посмотреть сообщение
global $connect;
Следует по возможности избегать создание собственных глобальных переменных, т.к. засорение глобального пространства имён - это "дурной тон".

Nemovok, вот как вариант:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
function connect($host, $user, $password, $dbname)
{
    if (!$connect = mysqli_connect("$host", "$user", "$password", "$dbname")) 
    {
        $error = 'Нет соединения с базой данных';
        echo $error;
        return false;
    } else
        return $connect;
}
 
function welcome()
{
    if (!first_check($string = $_POST['login']) AND !second_check($string = $_POST['login'])) 
    {
        if (!$connect = connect($host = "localhost", $user = "root", $password = "root", $dbname = "admin")) 
        {
            $input_login = $_POST['login'];
            $sql = ("SELECT login, password FROM users WHERE login = '$input_login' ");
            $query = mysqli_query($connect, $sql);
        }
    }
}
?>
1
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
30.10.2015, 17:58  [ТС] 4
Благодарю
0
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
30.10.2015, 17:59 5
welcome()
welcome()
welcome()
даст 3 коннекта
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function connect($host, $user, $password, $dbname)
{
    static  $connect=null;
    if ( $connect !== null ) return  $connect;
    $connect = mysqli_connect("$host", "$user", "$password", "$dbname");
    if (!$connect) 
    {
        $error = "Нет соединения с базой данных";
        echo "$error";
        return false;
    } else
        return $connect;
}
2
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 958
30.10.2015, 18:07 6
Цитата Сообщение от Vadim_Lasso Посмотреть сообщение
Следует по возможности избегать создание собственных глобальных переменных, т.к. засорение глобального пространства имён - это "дурной тон".
А чем выражается этот "дурной тон"? Чем так плох global?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
30.10.2015, 18:21 7
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Чем так плох global?
Тяжело тестировать, искать ошибки и т.д.
1
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
30.10.2015, 18:22 8
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Чем так плох global?
Есть немало причин, описанных на просторах интернета, по которым не стоит использовать этот оператор. Вот некоторые из них:
1. Сложно понять, где инициализируется переменная, доступ к которой осуществляется посредством global. Соответственно это ухудшает читабельность кода.
2. Глобальная переменная может быть переопределена в дебрях скрипта, и найти это место очень сложно. А значит велик риск сложно диагностируемых логических ошибок.
3. Код становится сильно связанным, выполнение одной части будет зависеть от другой, где глобальная переменная определена.
(с) гугл
1
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 958
30.10.2015, 18:57 9
Вас понял, спасибо!
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
30.10.2015, 19:51  [ТС] 10
Остановился на таком варианте. Кому интересно)))
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
       function connect ( $host = ' ' , $user = ' ' , $password = ' ' , $dbname = '' )
    {
        $connect = @mysqli_connect ( $host , $user , $password , $dbname );
        if ( !$connect ) 
        {
            $error = "Нет соединения с базой данных";
            echo "$error";
            return false;
        }
        return $connect;
    }
 
 
    function welcome (  )
    {
        if ( !first_check ( $s = $_POST ['login'] ) AND !second_check ( $s = $_POST ['login'] ) ) 
        {
            $connect = connect ( "localhost" , "root" , "root" , "admin" );
            if ( !$connect ) return;
            $i_login = $_POST ['login'];
            $i_password = $_POST ['password'];
            $sql = ( "SELECT login , password FROM users WHERE login = '$i_login' " );
            $query = mysqli_query ( $connect , $sql );
            $data = mysqli_fetch_assoc ( $query );
        }
        if ($data ['login'] != $i_login OR $data ['password'] != $i_password) 
        {
            $error = "Неверный логин или пароль";
            echo "$error";
            exit (  );
        }
    }
0
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 958
30.10.2015, 20:00 11
Цитата Сообщение от Nemovok Посмотреть сообщение
$connect = @mysqli_connect ( $host , $user , $password , $dbname );
Не думаю, что подавлять ошибку хорошая идея. Лучше так:
PHP
1
$connect = mysqli_connect ( $host , $user , $password , $dbname );
тем более, что у вас идет проверка:
PHP
1
2
3
        if ( !$connect ) 
        {
            $error = "Нет соединения с базой данных";
ИМХО, конечно...
2
30.10.2015, 20:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2015, 20:00
Помогаю со студенческими работами здесь

Ошибка mysqli_query() expects parameter 1 to be mysqli, null given
прпо

Warning: mysqli_query() expects parameter 1 to be mysqli, null given
Здравствуйте. Как исправить эти ошибки &quot; Warning: mysqli_real_escape_string() expects exactly 2...

Ошибка Warning: mysqli_query() expects parameter 1 to be mysqli, null given in
При обновление кода под версию php 7 возникли ошибки. Warning: mysqli_query() expects parameter...

"mysqli_query() expects parameter 1 to be mysqli, null given"
&lt;?php $data = $_POST; if(isset($data)) { $data = date(&quot;Y-m-d&quot;); $querys = &quot;INSERT...

Mysqli_query() expects parameter 1 to be mysqli
Доброго времени суток, уважаемые форумчане. Решил заняться изучением php и БД :D Тут пара...

Warning: mysqli_query() expects parameter 1 to be mysqli
Здравствуйте, уважаемые форемчане. Только начал попытку изучения PHP и MySQL. Решил начать со...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru