我一直在制作一个 php 网站,在我的本地机器上开发。对此真的很陌生,所以这是我尝试过的第一件事。当我搬到我的主机时,我收到以下错误:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'matthew'@'localhost' (using password: NO) on line 11
我在这里进行了相当多的搜索,我很确定这是因为我需要“准备”我的查询。我不确定的是什么时候准备正确,什么时候不正确。我在下面添加了一些查询以详细解释:
连接到数据库:
$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