how to get this tax_query working?

To achieve this you need to conditionally add the clauses, right now you always have all 3, even if only 2 are selected.

So instead pass in a variable:

$tax_queries = [
    'relation' => 'AND',
];

Notice I used the modern [] syntax for arrays instead of array(), and I added the relation field as we always want that.

Then, add each clause by testing those variables, e.g. for the book category:

if ( ! empty( $_GET['book-category'] ) ) {
    $tax_queries[] = [
        'taxonomy' => 'book_category',
        'field'    => 'slug',
        'terms'    => $_GET['book-category'],
    ];
}

This would also be a good time to do any trimming or processing to remove trailing spaces etc.

Do this again for the other 2 clauses/fields. Then finally, use the variable in the query:

    'tax_query'=> $tax_queries,

error code: 523