まず正常ケースの場合ですが、WHERE句ではシングルクォーテーションをエスケープしないと文字列として認識しません。
MySQLではシングルクォーテーションを二重に '' とすればエスケープできますが、RDBMSによって違いがあるので、定石としてはRDBMSが用意するエスケープ関数(PHP+MySQLの場合はmysql_real_escape_string)を利用します。
次にSQLインジェクションのケースですが、シングルクォーテーションによるインジェクションで有名なケースは次のようなSQL文です。
SELECT * FROM table WHERE data1='{$key}1' and data2='{$key2}';
ここで
$key1 = ""; $key2 = "' or 'a'='a'; ";
を入力されると、
SELECT * FROM table WHERE data1='' and data2='' or 'a'='a'; '
となり、全レコードを抽出されてしまいます。
以上2点から、WHERE句の変数にシングルクォーテーションを含むと含まざるとに関わらず、mysql_real_escape_string関数でエスケープするのが定石となっています。
なお、これ以外にも様々なSQLインジェクションのケースが考えられます。
mysql_real_escape_string関数を通す前にユーザーが入力した値をチェックし、検索キーとして有り得ない値であればエラーを返すようにすべきです。ユーザーが入力した値をそのまま検索キーとして使ってはいけません。
「表示するとき」とはどういう意味でしょうか?
お知らせください。