2014-10-06 2 views
0

Я делаю онлайн-тест aptitude, который выберет 2 случайных вопроса из базы данных и отобразит их на веб-странице для ответа.Предупреждение: mysql_fetch_object(): предоставленный аргумент не является допустимым ресурсом результата MySQL в,

Приведенный ниже код получает ответы от кандидата (простая демонстрация поднимает только 2 случайных вопроса).

// Build Form 
$nbQuestion = 2; 
$form = '<form id="form1" name="quest" method="POST" action="" >'; 
$form .= getQuestion("SELECT * FROM `microsoftq` ORDER BY RAND() LIMIT ".$nbQuestion); 
$form .= '<input type="submit" id="submit_id" name="SUBMIT" value="SUBMIT"></form>'; 

// Save answer 
if (isset($_POST['SUBMIT'])) 
{ 
    for($i=1;i<=$nbQuestion;$i++){ 
     saveAnswer($i); 
    } 
} 
function getQuestion($query){ 
    $question = ""; 
    $i = 1; 
    $result = mysql_query($query); 
    while ($row = mysql_fetch_object($result)) { 
     $question .= "<b>Question:-<br></b>".$row->Question." <br><br>"; 
     $question .= "<input type='hidden' name='q".$i."' value='".$row->QNo."'>"; 
     $question .= "<input type=radio name = 'answer".$row->QNo."' value = '".$row->Opt1."'></input>$a1 &nbsp &nbsp<br>"; 
     $question .= " <input type=radio name = 'answer".$row->QNo."' value = '".$row->Opt2."'></input>$b1 &nbsp &nbsp<br>"; 
     $question .= " <input type=radio name = 'answer".$row->QNo."' value = '".$row->Opt3."'></input>$c1 &nbsp &nbsp <br>"; 
     $question .= " <input type=radio name = 'answer".$row->QNo."' value = '".$row->Opt4."'></input>$d1 <br><br> "; 
     $i++; 
    } 
    mysql_free_result($result); 
} 
function saveAnswer($nb){ 
    $qId=$_POST["q".$nb]; 
    if (is_numeric($qId)) { 
     $query = mysql_query("SELECT * FROM `microsoftq` WHERE QNo=".$qId); 
     $rows1 = mysql_fetch_array($query); 
     $ans = $rows1['Ans']; 
     $opt = $_POST["answer".$qId]; 
     if($ans==$opt) 
     { 
      $val="ct"; 
     } 
     else 
     { 
      $val="wg"; 
     } 
     mysql_query("insert into $username values('$qId','$opt','$val')") 
     or die(mysql_error()); 
    } 
} 

код ошибки throughing как Внимание: mysql_fetch_object(): поставляется аргумент не является допустимым MySQL результатом ресурсов в C: \ XAMPP \ HTD, .. в то время как линии ($ строка = mysql_fetch_object ($ результат)) {

и

Предупреждение: mysql_free_result() ожидает параметр 1, чтобы быть ресурсом, логический дан в C: \ XAMPP \ HTDOCS .... в строке mysql_free_result($result);

+0

Sidenote: '$ username' не определено, по крайней мере, так оно и будет, если это ваш полный код. –

+0

Вы должны действительно привязывать параметры и использовать PDO или mysqli_ * для предотвращения инъекций. mysql_ * был обесценен 50 лет назад;) – AnchovyLegend

+0

Кроме того, попробуйте указать все ваши радиостанции ' ' –

ответ

3

Вы получаете ваш первый ошибка, потому что у вас нет в вашей функции будет открыто соединение с базой данных. Вторая ошибка является последующей ошибкой и вызвана той же проблемой. Чтобы решить эту проблему, вы можете либо передать соединение с вашей функцией в качестве параметра, либо создать новое соединение внутри функции. (Как указано в комментариях 'Jay Blanchard')

+0

hi thanx выше проблема решена, но я получаю ошибку 'Undefined Variables' в $ a, $ b, $ c и $ d. – Redsun

+0

Ну, где вы определяете эти переменные? Я не вижу его в опубликованном коде. Если вы предоставите больше информации, я постараюсь помочь. –

Смежные вопросы

 Смежные вопросы