Когда использовать подготовленные запросы PDO. Ошибка mysql_real_escape

Я делаю php-сайт, разрабатывая свою локальную машину. Действительно новичок в этом, так что это первое, что я когда-либо пытался. Когда я перешел на мой хост, я получаю следующую ошибку:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'matthew'@'localhost' (using password: NO) on line 11 

Я искал здесь справедливый бит, и я уверен, что это связано с тем, что мне нужно «подготовить» мои запросы. Я не уверен в том, когда правильно готовить, а когда нет. Я добавил некоторые из моих запросов ниже, чтобы подробно объяснить:

соединение с db:

 $hostname = "localhost"; $username = "root"; $password = "root"; try { $dbh = new PDO("mysql:host=$hostname;dbname=wmpt", $username, $password); //echo "Connected to database"; // check for connection } catch(PDOException $e) { echo $e->getMessage(); } 

Вот пример запроса:

 $username = mysql_real_escape_string($_POST['run']); $STH = $dbh->query("SELECT * FROM tblusers WHERE username = '$username' "); $STH->setFetchMode(PDO::FETCH_ASSOC); $result = $STH->fetch(); 

Мой вопрос: мне нужно только «подготовить» запрос, если я запрашиваю / вставляю / обновляю БД с представленными пользователями данными?

Является ли вышеупомянутый запрос плохой практикой? Что делать, если он не содержал предоставленные пользователем данные, т.е. я хотел запросить

  $STH = $dbh->query("SELECT * FROM tblusers WHERE username LIKE '%hotmail%' "); 

Это, вероятно, плохой пример, но я иллюстрирую определенный разработчиком запрос.

Это причина, по которой я получаю, и как я могу избежать:

 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'matthew'@'localhost' (using password: NO) on line 11