簡體   English   中英

PHP無法將全局變量導入到類內部的函數中

[英]PHP Can not import a global variable into a function that is inside a class

我有一個基於php和mysql的無限菜單類,可在stackoverflow上找到。 我已經為多語言網頁定制了它。 但是,當我嘗試將全局變量導入類時,會給我一個警告。

警告:第75行的C:\\ wamp \\ www \\ path \\ menu.php中為foreach()提供了無效的參數

這是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] );
....

如果我更改無變量manuel值的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.'';

我想念什么? 我的語言腳本不能處理last else語句,還是我的get_menu_items函數不能導入$lang變量?

任何幫助將不勝感激。

引號的字符串連接的老同學錯誤'

  $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."'將確保在查詢中獲取的變量用'引號引起來!

另外,升級到更好,更安全的工作方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM