Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Пользовательские функции PHP + MySQLi


Автор: ZloiKombat 14.1.2014, 12:16
Доброго времени суток.

Помогите пожалуйста решить задачку.
Возможно я просто что то упускаю из вида, но не могу никак заставить MySQLi запросы работать внутри пользовательских функций.

Вот пример:

$connect = new mysqli("localhost", "логин", "пароль", "база");
$connect->set_charset("utf8");

function anti($string)
{
    $turr = $connect->query("SELECT `id` FROM `table` WHERE `id`='".$string."';");

    return $turr['id'];
}

echo anti(10);

Подобное наотрез отказывается работать на сайте. Обрезает страницу, предположительно? не хочет работать потому что не видит переменную  $connect. В остальном с MySQLi проблем по сайту нет, работает везде как часы, кроме пользовательской функции((

P.S global $connect; - Так пробовал, не помогло.

Автор: Fortop 14.1.2014, 16:07
Передать собственно этот $connect в виде параметра в функцию религия не позволяет?

Автор: AVA12 14.1.2014, 16:33
Цитата
global $connect; - Так пробовал, не помогло.

Это потому, что переменная на самом деле не глобальная.

Этот файл подключается внутри какой-то функции и, соответственно, работает в контексте той функции, и объявляемые в нем переменные по умолчанию являются локальными. Простейшее решение проблемы - везде объявлять эту переменную как глобальную.

Автор: ZloiKombat 14.1.2014, 16:47
Цитата(Fortop @ 14.1.2014,  16:07)
Передать собственно этот $connect в виде параметра в функцию религия не позволяет?

В смысле так что ли?

$connect = new mysqli("localhost", "логин", "пароль", "база");
$connect->set_charset("utf8");

function anti($string,$string2)
{
    $turr = $string2 -> query("SELECT `id` FROM `table` WHERE `id`='".$string."';");

    return $turr['id'];
}

echo anti(10,$connect);

Проверял, не пашет.

Добавлено через 3 минуты и 52 секунды
Цитата(AVA12 @ 14.1.2014,  16:33)
Цитата
global $connect; - Так пробовал, не помогло.

Это потому, что переменная на самом деле не глобальная.

Этот файл подключается внутри какой-то функции и, соответственно, работает в контексте той функции, и объявляемые в нем переменные по умолчанию являются локальными. Простейшее решение проблемы - везде объявлять эту переменную как глобальную.

Не улавливаю мысль, о каком файле идет речь?

Автор: Gold Dragon 14.1.2014, 18:06
а так пашет?

Код

$connect = new mysqli("localhost", "логин", "пароль", "база");
$connect->set_charset("utf8");
$string = 10;
$turr = $connect->query("SELECT `id` FROM `table` WHERE `id`='".$string."';");
echo $turr['id'];


Автор: ZloiKombat 14.1.2014, 18:51
Gold Dragon, Так пашет.

Добавлено через 54 секунды
Проблема была моя не внимательность, всем спасибо за помощь, решение найдено.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)