在foreach中循环

时间:2011-09-30 09:47:52

标签: php arrays

我有一个表格,问题可以得到解答。然后在接下来的页面上,我试图验证问题,看看答案是否正确,因为最终我必须确定测试的百分比。

$tid1 = $_SESSION['tid'];
$departmentid = $_SESSION['deptid'];
$userid = $_SESSION['userid'];

foreach($_POST['question'] as $key => $answer) {
    include 'datalogin.php';
    mysql_query("INSERT INTO ex_answer (id,class_name,testname,name,percentage,qnr,answer_chosen,points_scored,result)
VALUES ('0','$departmentid','$tid1','$userid','0','$key','$answer[0] $answer[1] $answer[2] $answer[3] $answer[4] $answer[5] $answer[6] $answer[7] $answer[8]','0','0')");

    $sql1="SELECT * FROM ex_question WHERE test_name = '$tid1' AND q_nr = '$key'";
    $result1=mysql_query($sql1);
    while($row1 = mysql_fetch_array($result1)) {
        $q_nr=$row1['q_nr'];
        echo $q_nr;
    }
}

问题是(我认为)它没有从表中正确选择问题编号q_nr = '$key',因为echo $q_nr没有输出

3 个答案:

答案 0 :(得分:1)

使用mysql_fetch_assoc可以在返回的数组上使用列名索引。

答案 1 :(得分:1)

如果您获得了有效的结果(在数据库客户端中测试sql),那么您应该使用以下内容将其作为关联数组访问:

mysql_fetch_assoc($result1); 

代替mysql_fetch_array()或使用     mysql_fetch_array($ result1,MYSQL_ASSOC)

测试返回给你的内容,注释掉你的while循环,然后执行:

$row1 = mysql_fetch_array($result1);
print_r($row1);

在while循环之前添加以下内容进行验证:

if (!$result1) {
    die('Could not query:' . mysql_error());
}

答案 2 :(得分:0)

您还可以输出SQL并在数据库上对其进行测试,这将显示您获得了预期的结果