注意未定义的偏移线23

时间:2013-12-06 18:41:34

标签: php

我的php文件有问题。由于通知,Eclipse无法读取并将其存储到我的sqlite数据库。请帮助一下。先感谢您。这是我的代码。

<?php

include("config.php");
$x =  $_GET["quiz"];
$query1 = "SELECT id, quiz, question FROM mdl_quiz_question_instances WHERE quiz = $x";
$result1 = mysql_query($query1);
$obj = array();
$ques = array();
$i = 0;
while($row=mysql_fetch_assoc($result1)){
    $obj[$i]['id'] = $row["id"];
    $obj[$i]['quiz'] = $row["quiz"]; 
    $obj[$i]['question'] = $row["question"];
    $ques[$i] = $obj[$i]['question'];
    $i++; 
}

$query2 = "SELECT id, category, questiontext, qtype FROM mdl_question";
$result2 = mysql_query($query2);
$obj2 = array();
$j = 0;
while($row=mysql_fetch_assoc($result2)){
    if($ques[$j] == $row["id"]){
    $obj2[$j]['id'] = $row["id"];
    $obj2[$j]['category'] = $row["category"];
    $obj2[$j]['questiontext'] = $row["questiontext"];
    $obj2[$j]['qtype'] = $row["qtype"];
    $j++;
    }
}

echo json_encode($obj2);
mysql_close();  


?>

1 个答案:

答案 0 :(得分:0)

变化

if ($ques[$j] == $row["id"]) {
}

if (isset($ques[$j]) && $ques[$j] == $row["id"]) {
}

您的第一个查询可能只会返回少于或等于第二个查询返回的结果数的结果数。由于第一个查询填充了$ques数组,因此在循环查看第二个查询的结果时无法访问它,而不会检查您要查找的键是否存在。

同样基于猜测,此代码不会按照您期望的方式匹配来自两个不同查询的值。