开发者

Problem with mysql_query() ;Says resource expected

I have this php file. The lines marked as bold are showing up the error :"mysql_query() expecets parameter 2 to be a resources. Well, the similar syntax on the line on which I have commented 'No error??' is working just fine.

 function checkAnswer($answerEntered,$quesId)
 {
  //This functions checks whether answer to question having ques_id = $quesId is satisfied by $answerEntered or not

  $sql2="SELECT keywords FROM quiz1 WHERE ques_id=$quesId";
  **$result2=mysql_query($sql2,$conn);**
  $keywords=explode(mysql_result($result2,0));

  $matches=false;
  foreach($keywor开发者_Python百科ds as $currentKeyword)
  {
   if(strcasecmp($currentKeyword,$answerEntered)==0)
   {
    $matches=true;
   }
  }

  return $matches;

 }

 $sql="SELECT answers FROM user_info WHERE user_id = $_SESSION[user_id]";
 $result=mysql_query($sql,$conn);         // No error??
 $answerText=mysql_result($result,0);

 //Retrieve answers entered by the user
 $answerText=str_replace('<','',$answerText);
 $answerText=str_replace('>',',',$answerText);
 $answerText=substr($answerText,0,(strlen($answerText)-1));
 $answers=explode(",",$answerText);

 //Get the questions that have been assigned to the user.
 $sql1="SELECT questions FROM user_info WHERE user_id = $_SESSION[user_id]";
 **$result1=mysql_query($sql1,$conn);**
 $quesIdList=mysql_result($result1,0);
 $quesIdList=substr($quesIdList,0,(strlen($quesIdList)-1));
 $quesIdArray=explode(",",$quesIdList);



 $reportCard="";
 $i=0;
 foreach($quesIdArray as $currentQuesId)
 {
  $answerEnteredByUser=$answers[$i];

  if(checkAnswer($answerEnteredByUser,$currentQuesId))
  {
   $reportCard=$reportCard+"1";
  }
  else
  {
   $reportCard=$reportCard+"0";
  }
  $i++;
 }

 echo $reportCard;
?>

Here is the file connect.php. It is working just fine for other PHP documents.

<?php
 $conn= mysql_connect("localhost","root","password");
 mysql_select_db("quiz",$conn);
?>


$result2=mysql_query($sql2,$conn);

$conn is not defined in the scope of your function (even if you're including the connect.php file before that.

although you can use the suggestion to make $conn global, it's usually better practice to not make something global just for the sake of globalizing it.

i would instead pass $conn to the function as a parameter. this way, you can reuse the same function you wrote with different connections.


$conn isn't declared as a global so the function cannot access it, as it is not defined within it.

Either simply add

global $conn;

To the top of the function to allow it to access the $conn.

Or you can remove $conn from the mysql_query() statement. By default it will use the current connection (as mentioned in the comments below).


Where do you set $conn? It doesn't look like you set a connection within that function

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜