如何将 $_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
}
更多here.
或者您可以像这样使用 global
关键字:
$pages = $_POST['pages'];
function insertLocalBusinessSchema()
{
global $pages; // $pages becomes global
echo $pages; // this also works
}
我正在尝试将我的 $_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
}
更多here.
或者您可以像这样使用 global
关键字:
$pages = $_POST['pages'];
function insertLocalBusinessSchema()
{
global $pages; // $pages becomes global
echo $pages; // this also works
}