Custom query posts error

When you do this:

$querystr = "SELECT * FROM `wp_posts` 
WHERE post_content 
    LIKE '%Alba%' 
    AND post_type="post" 
OR 
    LOWER(post_title) 
    LIKE '%$nume_searchq%' 
OR 
    LOWER(post_content) 
    LIKE '%$spec_searchq%' 
OR 
    LOWER(post_content) 
    LIKE '%$instit_searchq%' 
LIMIT $limit ";

If ANY of the variables are blank ($nume_searchq || $spec_searchq || $instit_searchq ), you will get all posts, because LIKE '%%' matches everything.

So this leaves you with a couple of options.

1) Explicitly set each of those variables every time –or–

2) Conditionally include them depending on if they contain something valuable.

For example:

case "AB":
    $querystr = "SELECT * FROM `wp_posts` WHERE post_content LIKE '%Alba%' AND post_type="post"";

    if ( isset( $nume_searchq ) && $nume_searchq !== '' )
        $querystr .= " OR LOWER(post_title) LIKE '%$nume_searchq%'";

    if ( isset( $spec_searchq ) && $spec_searchq !== '' )
        $querystr .= " OR LOWER(post_content) LIKE '%$spec_searchq%'";

    if ( isset( $instit_searchq ) && $instit_searchq !== '' )
        $querystr .= " OR LOWER(post_content) LIKE '%$instit_searchq%'";

    $querystr .= " LIMIT $limit ";

    break;