首页 > 解决方案 > 在数组变量中存储多个数据

问题描述

我需要一些帮助来将数据存储在数组中。我遇到了数组变量的问题$_SESSION,因为它一次只允许我存储一个数据,而它已经覆盖了数据。

当我尝试这个时:

$link = mysqli_connect('localhost', 'mydbusername', 'mydbpassword', 'mydbname');
$campaign_db = "SELECT campaign_name FROM campaign WHERE username = 'myusername'";

if($stmt = mysqli_prepare($link, $campaign_db))
{
    // Set parameters
    $param_username = $_SESSION['username'];

    // Attempt to execute the prepared statement
    if(mysqli_stmt_execute($stmt))
    {
        // Bind variables to the prepared statement as parameters
        mysqli_stmt_execute($stmt);

        $results = mysqli_stmt_get_result($stmt);

        while ($rows = mysqli_fetch_array($results, MYSQLI_NUM))
        {
            foreach ($rows as $campaign)
            {
                $_SESSION['campaign'] = $campaign;
            }
        }
    }
    print_r($_SESSION);
    // Close statement
    mysqli_stmt_close($stmt);

}

我只会得到这个:

Array
(
    [campaign] => facebook
)

它应该是:

Array 
( 
    [campaign] => somename [campaign] => youtube [campaign] => google [campaign] => linkedlin [campaign] => bing [campaign] => facebook 
)

我试过这个:

$_SESSION['campaign'][] = $campaign;

它给了我一个错误:致命错误:未捕获的错误:字符串不支持 [] 运算符。堆栈跟踪:#0 {main} 抛出。

你能告诉我一个例子,我如何在变量的数组中插入和存储超过 1 个数据$_SESSION

编辑:当我尝试这个时:

while ($rows = mysqli_fetch_array($results, MYSQLI_NUM))
{
    $_SESSION['campaign'] = array($rows);
)

我也试过这个:

while ($rows = mysqli_fetch_array($results, MYSQLI_NUM))
{
    foreach ($rows as $campaign)
    {
        $_SESSION['campaign'] = array($campaign);
    }
)

它仍然给我这个:

 [campaign] => Array
    (
        [0] => facebook
    )

标签: phpmysqlsession

解决方案


您必须已$_SESSION['campaign']在代码中的某处初始化为字符串。无论您在哪里执行此操作,都需要将其更改为

$_SESSION['campaign'] = array('string value')

或者如果它是一个空字符串,那么只需使用array()然后你就可以使用

$_SESSION['campaign'][] = $campaign;

在你的循环中。


推荐阅读