我的问题是,当我使用会话变量在不同的PHP脚本之间复制数组元素时,什么都不会打印出来。以下是我的两个PHP文件。
file1.php
<?PHP
session_start();
$SQL = "SELECT * FROM tblquestions";
if ($db_found) {
$result = mysql_query($SQL);
$numRows = mysql_num_rows($result); //return number of rows in the table
echo '<FORM NAME ="form1" METHOD ="POST" ACTION ="file2.php">';
for ($i = 1; $i <= 2; $i++)
{
$db_field = mysql_fetch_assoc($result);
$qID[$i] = $db_field['QID'];
$question[$i] = $db_field['Question'];
$A[$i] = $db_field['qA'];
$B[$i] = $db_field['qB'];
$C[$i] = $db_field['qC'];
echo '<P>';
print $question[$i];
echo '<P>';
echo "<INPUT TYPE = 'Radio' Name = '".$qNum."' value= 'A'>";
print $A[$i];
echo '<P>';
echo "<INPUT TYPE = 'Radio' Name = '".$qNum."' value= 'B'>";
print $B[$i];
echo '<P>';
echo "<INPUT TYPE = 'Radio' Name = '".$qNum."' value= 'C'>";
print $C[$i];
//if (isset($_POST[$name_Value]))
$survey_Answers[$i-1] = $_POST[$qNum];
print '</BR>'.$survey_Answers[$i-1]."</BR>";
$question_Number = ltrim($qNum,'q');
$question_Number++;
$qNum ='q'.$question_Number;
}
echo '<p>';
$_SESSION['answers'] = $survey_Answers;
echo '<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Click here to vote">';
echo '</form>';
?>
On my Second file (file2.php), I have the following:
<?PHP
session_start();
if (isset($_POST['Submit1'])) {
$results = $_SESSION['answers'];
print $results[0];
}
?>
然而,在我的file2.php上,我得到了以下错误:未定义的偏移量:0,并且没有打印出任何内容。
echo '<p>';
session_start();
这不起作用,必须在任何输出之前调用session_start!如果你把session_start()
放在文件的开头,你应该没问题。
要使用基于cookie的会话,在将任何内容输出到浏览器之前,必须调用session_start()。
来源:http://php.net/manual/en/function.session-start.php
在输出任何内容之前,您需要调用session_start()
。在输出任何内容之前,最好将它放在脚本的开头。
请将以下代码添加到您想要使用会话数据的每个页面。否则它将返回一个错误。
<?php
session_start();
?>
session_start();
应该是与文件2.php中相同的代码的第一行
在session_start()
的PHP手册页面上有一条注释,听起来与您的问题非常相似。http://php.net/manual/en/function.session-start.php#65944
它说,将整数键指定为直数组或使用整数的数组将失败,数据将不会传递到下一页。
修改代码以使用字符串作为键。