将值推入php中的会话数组

时间:2016-11-18 11:05:00

标签: php arrays

我有以下代码,用户从下拉列表中选择值。每次提交时,ID都应该在数组中推送。

<?php
$_SESSION["test"] = array();
$link = mysql_connect("localhost","root","");
mysql_select_db("dbsikkim",$link);
?>
<form name="form1" method="post" action="">
<?php
$sql=mysql_query("SELECT ID,DOC_DESC FROM gstn_document_type_master",$link);
echo "<select name='doc_type_code2'>";
  if(mysql_num_rows($sql)){
    while($row=mysql_fetch_array($sql)){
       echo "<option value=".$row['ID'].">".$row['DOC_DESC']."</option>";
  }
}
echo "</select>";
?>
<input type="submit" value="Submit" name="submit">
</form>

<?php
if(isset($_POST['submit']))
{
 $_SESSION["test"][] = $_POST['doc_type_code2'];  //ERROR IN THIS LINE

 for ($i=0; $i < sizeof($_SESSION["test"]); $i++) {
                            echo $_SESSION["test"][$i]."<br>";
                            }

}
?>

只有当前值被推入数组并替换前一个。简单来说,它是作为变量而不是数组。

1 个答案:

答案 0 :(得分:-1)

您很可能需要初始化会话变量。

$ _ SESSION [&#34; test&#34;]默认情况下不是数组。你可以试着这样做:

// If the session variable is not yet an array, initialize it
if (!is_array($_SESSION["test"])) {
   $_SESSION["test"] = [];
}

$_SESSION["test"][] = $_POST['doc_type_code2'];

第一行为您的字段指定一个数组。 第二个为数组赋值。

请注意,您的代码中有几项需要改进的地方。例如,这些天你可以使用PDO。你也不应该使用&#34; global&#34;。同样混合PHP和HTML代码可能会导致难以维护的软件。我不想听起来很傲慢,但我强烈推荐你这本书"PHP The right way"