3

スクリプトでこのエラーが発生し、検索バーが機能しなくなったと思います。

致命的なエラー:89行目の/web/stud/xxx/Mobile_app/previousquestions.phpにある非オブジェクトのメンバー関数bind_param()を呼び出します。

それが指している線はこの線です:

$stmt->bind_param("s",$each);    

このエラーを修正するには何をする必要がありますか?現時点では、ユーザーが検索バー内にコンテンツを送信した後、エラーが原因で結果が表示されません。

  <?php

        //connect to db

          $questioncontent = (isset($_POST['questioncontent'])) ? $_POST['questioncontent'] : '';

        ?>

        <?php 

        if (isset($_GET['searchQuestion'])) {

        $searchquestion = $questioncontent;
        $terms = explode(" ", $searchquestion);
$parameters = array();

        $questionquery = "
        SELECT q.QuestionId, q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT(an.Answer ORDER BY an.Answer SEPARATOR ' ') AS Answer, r.ReplyType, 
               q.QuestionMarks 
          FROM Answer an 
          INNER JOIN Question q ON q.AnswerId = an.AnswerId
          JOIN Reply r ON q.ReplyId = r.ReplyId 
          JOIN Option_Table o ON q.OptionId = o.OptionId 

                         WHERE ";

        $i=0;
        foreach ($terms as $each) {     
            $i++;         

            if ($i == 1){         
                $questionquery .= "q.QuestionContent LIKE ?";     
                } else {         
                    $questionquery .= "OR q.QuestionContent LIKE ?";    
                     } 
                     }  

                     $questionquery .= "GROUP BY q.QuestionId, q.SessionId ORDER BY "; $i = 0; foreach ($terms as $each) {     
                         $i++;      

            if ($i != 1)         
            $questionquery .= "+";     
            $questionquery .= "IF(q.QuestionContent LIKE ?,1,0)"; 
            } 

            $questionquery .= " DESC "; 

            $stmt=$mysqli->prepare($questionquery);      
    $parameters[] = ($each)   
    $stmt->execute($parameters);  
            $stmt->bind_result($dbQuestionId,$dbQuestionContent,$dbOptionType,$dbNoofAnswers,$dbAnswer,$dbReplyType,$dbQuestionMarks); 
            $questionnum = $stmt->num_rows();

        }

    ?>
4

1 に答える 1

2

$stmt 変数が正しく設定されていないことを意味します。行の直後にLIKE ?連結しているため、行の後にスペースが必要だと思います。GROUP BY

生成している SQL ステートメントが正しいこと、およびデータベース接続も機能していることを確認する必要があります。

于 2012-06-19T17:28:01.017 に答える