mysql_real_escape_string错误

时间:2012-05-10 14:13:11

标签: mysql database mysql-real-escape-string

我正在Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'username'@'localhost' (using password: NO)

这是我的代码..

<?php
include 'config.php';
$email = mysql_real_escape_string($_GET['email']);

$validation = filter_var($email, FILTER_VALIDATE_EMAIL);
if ( $validation ) {
    // Make a MySQL Connection
    mysql_connect($Host,$Username,$Password) or die(mysql_error());
    mysql_select_db($Database) or die(mysql_error());

    // Insert rows
    mysql_query("INSERT INTO formusers
    (formemail) VALUES('$email') ") 
    or die(mysql_error()); 
}
?>

如果我移动线以建立数据库连接,它确实有效。是否有必要在使用mysql_real_escape_string之前建立数据库连接,或者我只是做错了?

3 个答案:

答案 0 :(得分:3)

是的,你需要一个开放的mysql连接才能做到这一点。

我建议你将mysql_connect()放在脚本之上,以确保永远不会发生此错误。 (当然,如果你错误地连接到数据库,它仍然会发生)

答案 1 :(得分:1)

是的,这是必需的。

  

注意:

     

在使用mysql_real_escape_string()之前需要MySQL连接,否则E_WARNING级别的错误是   生成,返回FALSE。如果未定义link_identifier,   使用最后一个MySQL连接。

http://php.net/manual/en/function.mysql-real-escape-string.php

答案 2 :(得分:1)

如果您无法建立mysql连接,可以使用:

mysql_escape_string

但是:从PHP 5.3.0开始已经弃用了!

如果可能,请始终使用mysql_real_escape_string