Php 在数组变量中存储多个数据

Php 在数组变量中存储多个数据,php,mysql,session,Php,Mysql,Session,我需要一些在数组中存储数据的帮助。数组变量$\u SESSION有问题,因为它一次只允许存储一个数据,而它已经覆盖了数据 当我尝试这个: $link = mysqli_connect('localhost', 'mydbusername', 'mydbpassword', 'mydbname'); $campaign_db = "SELECT campaign_name FROM campaign WHERE username = 'myusername'"; if($stmt = mysql

我需要一些在数组中存储数据的帮助。数组变量
$\u 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);

}
while ($rows = mysqli_fetch_array($results, MYSQLI_NUM))
{
    foreach ($rows as $campaign)
    {
        $_SESSION['campaign'] = array($campaign);
    }
)
我只会得到这个:

Array
(
    [campaign] => facebook
)
应该是:

Array 
( 
    [campaign] => somename [campaign] => youtube [campaign] => google [campaign] => linkedlin [campaign] => bing [campaign] => facebook 
)
我试过这个:

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

您能给我举一个例子,说明如何在变量
$\u会话
的数组中插入和存储1个以上的数据吗

编辑:当我尝试此操作时:

while ($rows = mysqli_fetch_array($results, MYSQLI_NUM))
{
    $_SESSION['campaign'] = array($rows);
)
我也尝试过这个:

$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);

}
while ($rows = mysqli_fetch_array($results, MYSQLI_NUM))
{
    foreach ($rows as $campaign)
    {
        $_SESSION['campaign'] = array($campaign);
    }
)
它仍然给了我这个:

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

您必须已将
$\u会话['campaign']
初始化为代码中某个字符串。无论你在哪里做,你都需要把它改成

$_SESSION['campaign'] = array('string value')
或者,如果它是一个空字符串,那么只需使用
array()
,就可以使用

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

在循环中。

您的“应该是:”不是有效数组,键必须是unique@IdontDownVote那么我应该使用什么呢?像nick shows belowI这样的数字键已经尝试过了,但是当我尝试这个
[0]=>facebook
会话['campaign']=array($campaign)时,它给了我这个
$\此代码对sql注入开放。使用
prepare();您应该使用一个。谢谢您,但是当我在循环中尝试此操作时:
$\u SESSION['campaign']=array($campaign),它给我这个
[0]=>facebook
。有什么想法吗?@RobertJones您需要使用
$\u SESSION['campaign']=array()在循环外部,然后在循环内部使用
$\u会话['campaign'][]=$campaign哦,我没有意识到我需要使用
$\u SESSION['campaign']=array()在循环之外,因此当我插入
$\u会话['campaign'][]=$campaign在循环内部,它工作得很好。非常感谢您的帮助,现在问题已经解决了。太好了。很高兴我能帮忙。