簡體   English   中英

如何將$ _SESSION變量傳遞給函數

[英]How to pass $_SESSION variables into a function

我正在嘗試將$ _SESSION變量傳遞到WordPress的數據庫查詢函數中。 如果我在函數中定義$ _SESSION變量,則可以正常工作。 但是,當我在全局級別上定義它們並嘗試傳遞它們時,它們不會傳遞。 請查看以下示例。

這將傳遞給下面的函數

$_SESSION['pages'] = $_POST['pages'];

但是當我添加

$pages = $_SESSION['pages'];

$ pages不會傳遞給該函數。

    $_SESSION['pages'] = $_POST['pages']; //passes
    $pages = $_SESSION['pages']; //does not pass

function insertLocalBusinessSchema()
    {
        //include global config  
        include_once($_SERVER['DOCUMENT_ROOT'].'/stage/wp-config.php' );

        global $wpdb;

        // if I try to define this outside of the function it doesn't pass through.
        $pages = implode(',', $_SESSION['pages']);

        $paymentAccepted = implode(',', $_SESSION['paymentAccepted']);

        $table_name = $wpdb->prefix . "schemaLocalBusiness";

        $insert = "UPDATE ".$table_name." SET addressLocality = '".$_SESSION['addressLocality']."', addressRegion = '".$_SESSION['addressRegion']."', postalCode = '".$_SESSION['postalCode']."', streetAddress = '".$_SESSION['streetAddress']."', pages = '".$pages."', paymentAccepted = '".$paymentAccepted."' WHERE id = 1";

        $wpdb->query($insert);

    }

預先感謝您的幫助!

$_SESSION是一個global variable ,因此您可以在任意位置調用它,而$pages並不是全局定義的,因此您需要將其作為參數傳遞給以下函數:

function insertLocalBusinessSchema($pages)
{
    echo $pages; // the variable is now in the function's scope
}

然后,您將調用傳遞$pages參數的函數:

insertLocalBusinessSchema($pages);

如果您希望在函數內使用變量$pages而不將其值作為參數傳遞,則可以使用$GLOBALS PHP super global variable來做到這一點,如下所示:

// super global variable GLOBALS
$GLOBALS['pages'] = $_POST['pages'];

function insertLocalBusinessSchema()
{
    echo $GLOBALS['pages']; // this also works
}

這里更多。

或者,您可以像這樣使用global關鍵字:

$pages = $_POST['pages'];

function insertLocalBusinessSchema()
{
    global $pages;  // $pages becomes global
    echo $pages;    // this also works
}

暫無
暫無

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

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