【发布时间】: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()本身并不构成“准备好的声明”;你应该使用一个。