【问题标题】:Storing more than one data in the array variable在数组变量中存储多个数据
【发布时间】:2018-12-04 21:10:08
【问题描述】:

我需要一些帮助来将数据存储在数组中。我遇到了数组变量$_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} 已抛出。

您能否给我展示一个示例,如何在变量$_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
    )

【问题讨论】:

  • 你的“应该是:”不是一个有效的数组,键必须是唯一的
  • @IdontDownVote 那我应该用什么?
  • 如下所示的 nick 等数字键
  • 我试过了,但是当我尝试这个$_SESSION['campaign'] = array($campaign);时它给了我这个[0] => facebook
  • 这段代码对sql注入开放。使用prepare() 本身并不构成“准备好的声明”;你应该使用一个。

标签: php mysql session


【解决方案1】:

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

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

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

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

在你的循环中。

【讨论】:

  • 谢谢你,但是当我在循环中尝试这个时:$_SESSION['campaign'] = array($campaign);,它给了我这个[0] => facebook。有什么想法吗?
  • @RobertJones 您需要在循环外使用$_SESSION['campaign'] = array();,然后在循环内使用$_SESSION['campaign'][] = $campaign;
  • 哦,我没有意识到我需要在循环外使用$_SESSION['campaign'] = array();,所以当我在循环内插入$_SESSION['campaign'][] = $campaign; 时,效果很好。非常感谢您的帮助,所以问题现在已经解决了。
  • 太好了。很高兴我能帮上忙。
猜你喜欢
  • 2015-12-08
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
相关资源
最近更新 更多