[英]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.