Я делаю 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