STMT-запрос работает нормально, но простой запрос приводит к фатальной ошибке: неперехваченная ошибка - PullRequest
0 голосов
/ 04 марта 2020

С stmt все работает нормально, но в простом запросе есть ошибка. Использование объектно-ориентированного сценария php.

Неустранимая ошибка: необученная ошибка: вызов функции-члена fetch_array () для строки ... Трассировка стека: # 0 {main}, брошенный в следующую строку * * У меня есть следующий запрос:

$SearchQuery = "SELECT * FROM work WHERE ((";
        if(isset($_COOKIE['option1'])){
            $Opt1 = '1';
            $SearchQuery .= "Phase = '$Opt1' OR ";
        }
        if(isset($_COOKIE['option2'])){
            $Opt2 = '2';
            $SearchQuery .= "Phase = '$Opt2' OR ";
        }
        if(isset($_COOKIE['option3'])){
            $Opt3 = '3';
            $SearchQuery .= "Phase = '$Opt3' OR ";
        }
        if(isset($_COOKIE['option4'])){
            $Opt4 = '4';
            $SearchQuery .= "Phase = '$Opt4' OR ";
        }
        if(isset($_COOKIE['option5'])){
            $Opt5 = '5';
            $SearchQuery .= "Phase = '$Opt5' OR ";
        }
        if(isset($_COOKIE['option6'])){
            $Opt6 = '6';
            $SearchQuery .= "Phase = '$Opt6' OR ";
        }
        $SearchQuery .= "FALSE) ";

        if(isset($_COOKIE['FromDate'])){
            $From = $_COOKIE['FromDate'];
            $SearchQuery .= "AND Create_date > '$From' ";
        }
        if(isset($_COOKIE['ToDate'])){
            $To = $_COOKIE['ToDate'];
            $SearchQuery .= "AND Create_date < '$To' ";
        }
        $SearchQuery .= "AND ID = '$WorkID') ";
        $SearchQuery .= "ORDER BY Create_date desc LIMIT 100";

И вот строка ошибки:

$row = ($SearchQuery->fetch_array(MYSQLI_ASSOC))

Отсутствует запрос $ db-> ($ SearchQuery);

1 Ответ

1 голос
/ 04 марта 2020

Похоже, вы не выполняете запрос и делаете небольшие ошибки, такие как: $row = ($SearchQuery->fetch_array(MYSQLI_ASSOC))

   $SearchQuery = "SELECT * FROM work WHERE ((";
        if(isset($_COOKIE['option1'])){
            $Opt1 = '1';
            $SearchQuery .= "Phase = '$Opt1' OR ";
        }
        if(isset($_COOKIE['option2'])){
            $Opt2 = '2';
            $SearchQuery .= "Phase = '$Opt2' OR ";
        }
        if(isset($_COOKIE['option3'])){
            $Opt3 = '3';
            $SearchQuery .= "Phase = '$Opt3' OR ";
        }
        if(isset($_COOKIE['option4'])){
            $Opt4 = '4';
            $SearchQuery .= "Phase = '$Opt4' OR ";
        }
        if(isset($_COOKIE['option5'])){
            $Opt5 = '5';
            $SearchQuery .= "Phase = '$Opt5' OR ";
        }
        if(isset($_COOKIE['option6'])){
            $Opt6 = '6';
            $SearchQuery .= "Phase = '$Opt6' OR ";
        }
        $SearchQuery .= "FALSE) ";

        if(isset($_COOKIE['FromDate'])){
            $From = $_COOKIE['FromDate'];
            $SearchQuery .= "AND Create_date > '$From' ";
        }
        if(isset($_COOKIE['ToDate'])){
            $To = $_COOKIE['ToDate'];
            $SearchQuery .= "AND Create_date < '$To' ";
        }
        $SearchQuery .= "AND ID = '$WorkID') ";
        $SearchQuery .= "ORDER BY Create_date desc LIMIT 100";

        $result = $mysqli->query($SearchQuery);
        //Mysqli is $db connection variable change it to yours, I didnt see in question
        if(!$result){ return $mysqli->error;}
        //You can use num_rows to check if searched result exist in db like following
        //if ($result->num_rows > 0) {
        $row = $result->fetch_array(MYSQLI_ASSOC);
        //if you wanna use while loop 
        //while($row = $result->fetch_array(MYSQLI_ASSOC)) {echo "return values here";}

        //uncomment following if you wanna use num_rows and uncommented up there 
        // }else{echo "No result found";}
        $result -> free_result();
...