致命错误:未捕获错误:在第27行的C:\ cont_search.php中调用boolean上的成员函数execute()

How to search from two table and query execute and bind to form json array to pass

cont_search.php

        <?php

    include "connection.php";
    $keyword=$_GET["context"];
    //Checking if any error occured while connecting
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        die();
    }

    $query =$conn->prepare("(SELECT isbn, title, authors, accession, publisher, pubyear, pages, keywords, subheadings, booknote, rak, hr, vr,            status, 'book' as type FROM books WHERE title LIKE '%".$keyword."%' OR authors LIKE '%".$keyword."%' OR publisher LIKE                      '%".$keyword."%' OR pubyear LIKE '%".$keyword."%' OR keywords LIKE '%".$keyword."%' OR subheadings LIKE '%".$keyword."%' OR               booknote LIKE '%".$keyword."%')  
           UNION ALL
           (SELECT t_acc, t_title, t_author, t_university, t_puby, t_keywords, t_rak, t_hr, t_vr, t_status, 'thesis' as type FROM thesis WHERE t_title LIKE '%".$keyword."%' OR t_author LIKE '%".$keyword."%' OR t_university LIKE '%".$keyword."%' OR t_puby LIKE '%".$keyword."%' OR t_keywords LIKE '%".$keyword."%')");

 echo "Error: " . $query . "<br>" . $conn->error;

    $query->execute();

    $query->bind_result($isbn, $title, $authors, $accession, $publisher, 
  $pubyear, $pages, $key, $sub, $bkn, $rak, $hr, $vr, $status, $tacc, 
                        $ttile, $tauthor, $tuni, $tpuby, $tkey, $trak, $thr, 
   $tvr, $tstatus);


    $books = array(); 
    $data =array();
    //traversing through all the result 
        while($query->fetch()){
        $temp = array();
        $temp['isbn'] = $isbn; 
        $temp['title'] = $title; 
        $temp['authors'] = $authors; 
        $temp['accession'] = $accession; 
        $temp['publisher'] = $publisher; 
        $temp['pubyear'] = $pubyear; 
        $temp['pages'] = $pages; 
        $temp['keywords'] = $key; 
        $temp['subheadings'] = $sub; 
        $temp['booknote'] = $bkn; 
        $temp['rak'] = $rak; 
        $temp['hr'] = $hr; 
        $temp['vr'] = $vr;
        $temp['status'] = $status;
        $temp['t_acc'] = $tacc;
        $temp['t_title'] = $ttile;
        $temp['t_author'] = $tauthor;
        $temp['t_university'] = $tuni;
        $temp['t_puby'] = $tpuby;
        $temp['t_keywords'] = $tkey;
        $temp['t_rak'] = $trak;
        $temp['t_hr'] = $thr;
        $temp['t_vr'] = $tvr;
        $temp['t_status'] = $tstatus;


        array_push($data, $temp);

        }
        $books['ss'] = true; //ss=send status
        $books['search'] = $data;
    //displaying the result in json format 
        header('Access-Control-Allow-Origin: *');
        header('Content-type:application/json;charset=utf-8');
        echo json_encode($books);

    ?>

http://localhost/cont_search.php?context=english

I execute/run above query and error occur

Error: The used SELECT statements have a different number of columns

Fatal error: Uncaught Error: Call to a member function execute() on boolean in C:\cont_search.php

Your first error there is in the sql query.

Each SELECT statement within UNION must have the same number of columns

You have more columns in the first select than in the second one