It is correct according to your query. The query returns all rows where one of the following is true:
column Questions contains the sign "$"
column Article contains the sign "$"
column Keywords includes the sign "$" and PostDate is in the last days.
What you want is probably that all of the below should be true:
One or more of the columns Questions, Article and Keywords should contain the sign "$"
PostDate is in the last days
Why it does like that can be understood by looking at the operator precedence.
Use parantheses to get the result you want:
SELECT *
FROM daily_events
WHERE (Questions LIKE '%$%'
OR Article LIKE '%$%'
OR Keywords LIKE '%$%')
AND PostDate
BETWEEN CURDATE( ) - INTERVAL 6
DAY AND CURDATE( )
ORDER BY PostDate DESC
LIMIT 0 , 30