mysql — PHP не может импортировать глобальную переменную в функцию внутри класса

У меня есть неограниченный класс меню, основанный на php и mysql, который обнаружен в stackoverflow. Я настроил это для многоязычной веб-страницы. Но когда я пытаюсь импортировать глобальную переменную в класс, это дает мне предупреждение;

Предупреждение: неверный аргумент указан для foreach () в C: \ wamp \ www \ path \ menu.php в строке 75

Это запрос Sql и get_menu_items функция:

function get_menu_items()
{
global $lang;
global $visibility;
$sql = 'SELECT menu. * , menu_lang. *
FROM menu
INNER JOIN menu_lang
ON menu.id = menu_lang.menu_id
AND menu_lang.menu_lang_iso = '.$lang.'
AND menu_lang.visibility = '.$visibility.'';
return $this->fetch_assoc_all( $sql );
}

А также $lang переменная из файла lang.php Это выглядит как;

<?php
ob_start();
session_start();
header('Cache-control: private');
if(isset($_GET["lang"])) {
$lang = $_GET["lang"];
$_SESSION["lang"] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
elseif(isset($_SESSION["lang"])) {
$lang = $_SESSION["lang"];
}
elseif(isset($_COOKIE["lang"])) {
$lang = $_COOKIE["lang"];
}
else {
$lang = "tr";
$_SESSION["lang"] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
ob_end_flush();

я подписал предупреждение 75 TH LINEВы можете найти это ниже;

function get_menu_html( $root_id = 0 )
{
$this->html  = array();
$this->items = $this->get_menu_items();

foreach ( $this->items as $item )
$children[$item['parent_id']][] = $item; // 75. LINE HERE

$loop = !empty( $children[$root_id] );
....

Если я изменяю SQL-запрос без переменных значений, это работает отлично;

$sql = 'SELECT menu. * , menu_lang. *
FROM menu
INNER JOIN menu_lang
ON menu.id = menu_lang.menu_id
AND menu_lang.menu_lang_iso = "tr"AND menu_lang.visibility = '.$visibility.'';

Что мне не хватает? Мой языковой скрипт не может обработать последнее утверждение или мой get_menu_items функция не может импортировать $lang переменная?

Любая помощь будет очень ценна.

0

Решение

старая школа ошибка конкатенации строк в кавычках '

  $sql = "SELECT menu. * , menu_lang. *
FROM menu
INNER JOIN menu_lang
ON menu.id = menu_lang.menu_id
AND menu_lang.menu_lang_iso = '".$lang."'
AND menu_lang.visibility = '".$visibility."'";

что оно делает

этот конкретный раздел: '".$lang."' удостоверится, что переменная, выбираемая в запросе, заключена в кавычки ' цитаты вокруг этого!

Кроме того, обновить до лучший и безопасный способ ведения дел

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]